Come modificare una directory di dati MySQL/MariaDB predefinita in Linux
Dopo aver installato i componenti di uno stack LAMP su un server CentOS/RHEL 7, ci sono un paio di cose che potresti voler fare.
Alcuni di essi hanno a che fare con l'aumento della sicurezza di Apache e MySQL/MariaDB, mentre altri potrebbero essere applicabili o meno in base alla nostra configurazione o alle nostre esigenze.
Ad esempio, in base all'utilizzo previsto del server database, potremmo voler modificare la directory data predefinita (/var/lib/mysql
) in una posizione diversa. Questo è il caso in cui si prevede che tale directory cresca a causa dell'elevato utilizzo.
Altrimenti, il filesystem in cui è memorizzato /var
potrebbe collassare a un certo punto causando il fallimento dell'intero sistema. Un altro scenario in cui modificare la directory predefinita è quando disponiamo di una condivisione di rete dedicata che desideriamo utilizzare per archiviare i nostri dati effettivi.
Per questo motivo, in questo articolo spiegheremo come modificare la directory dei dati MySQL/MariaDB predefinita in un percorso diverso su un server CentOS/RHEL 7 e distribuzioni Ubuntu/Debian.
Anche se utilizzeremo MariaDB, i concetti spiegati e i passaggi eseguiti in questo articolo si applicano sia a MySQL che a MariaDB se non diversamente specificato.
Modifica della directory dei dati MySQL/MariaDB predefinita
Nota: supponiamo che la nostra nuova directory di dati sia /mnt/mysql-data
. È importante notare che questa directory dovrebbe essere di proprietà di mysql:mysql
.
mkdir /mnt/mysql-data
chown -R mysql:mysql /mnt/mysql-data
Per tua comodità, abbiamo diviso il processo in 5 passaggi facili da seguire:
Passaggio 1: identificare la directory dei dati MySQL corrente
Per iniziare, è opportuno e utile identificare la directory dei dati corrente utilizzando il seguente comando. Non dare per scontato che sia ancora /var/lib/mysql
poiché potrebbe essere stato modificato in passato.
mysql -u root -p -e "SELECT @@datadir;"
Dopo aver inserito la password MySQL, l'output dovrebbe essere simile a.
Passaggio 2: copia la directory dei dati MySQL in una nuova posizione
Per evitare il danneggiamento dei dati, interrompere il servizio se è attualmente in esecuzione prima di procedere. Utilizza i comandi ben noti di systemd per farlo:
------------- On SystemD -------------
systemctl stop mariadb
systemctl is-active mariadb
------------- On SysVInit -------------
service mysqld stop
service mysqld status
OR
service mysql stop
service mysql status
Se il servizio è stato disattivato, l'output dell'ultimo comando dovrebbe essere il seguente:
Quindi copia ricorsivamente il contenuto di /var/lib/mysql
in /mnt/mysql-data
preservando i permessi e i timestamp originali:
cp -R -p /var/lib/mysql/* /mnt/mysql-data
Passaggio 3: configura una nuova directory di dati MySQL
Modifica il file di configurazione (my.cnf
) per indicare la nuova directory dei dati (/mnt/mysql-data
in questo caso).
vi /etc/my.cnf
OR
vi /etc/mysql/my.cnf
Individua le sezioni [mysqld]
e [client]
e apporta le seguenti modifiche:
Under [mysqld]:
datadir=/mnt/mysql-data
socket=/mnt/mysql-data/mysql.sock
Under [client]:
port=3306
socket=/mnt/mysql-data/mysql.sock
Salvare le modifiche e procedere con il passaggio successivo.
Passaggio 4: impostare il contesto di sicurezza di SELinux su Data Directory
Questo passaggio è applicabile solo a RHEL/CentOS e ai suoi derivati.
Aggiungi il contesto di sicurezza SELinux a /mnt/mysql-data
prima di riavviare MariaDB.
semanage fcontext -a -t mysqld_db_t "/mnt/mysql-data(/.*)?"
restorecon -R /mnt/mysql-data
Quindi riavvia il servizio MySQL.
------------- On SystemD -------------
systemctl stop mariadb
systemctl is-active mariadb
------------- On SysVInit -------------
service mysqld stop
service mysqld status
OR
service mysql stop
service mysql status
Ora utilizza lo stesso comando del Passaggio 1 per verificare la posizione della nuova directory dei dati:
mysql -u root -p -e "SELECT @@datadir;"
Passaggio 5: crea il database MySQL per confermare la directory dei dati
Accedi a MariaDB, crea un nuovo database e quindi controlla /mnt/mysql-data
:
mysql -u root -p -e "CREATE DATABASE tecmint;"
Congratulazioni! Hai modificato con successo la directory dei dati per MySQL o MariaDB.
Riepilogo
In questo post, abbiamo discusso come modificare la directory dei dati in un server MySQL o MariaDB in esecuzione su distribuzioni CentOS/RHEL 7 e Ubuntu/Debian.
Hai domande o commenti su questo articolo? Sentiti libero di farcelo sapere utilizzando il modulo sottostante: siamo sempre lieti di sentirti!