Ricerca nel sito web

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!