Com canviar un directori de dades MySQL/MariaDB predeterminat a Linux


Després d'instal·lar els components d'una pila LAMP en un servidor CentOS/RHEL 7, és possible que vulgueu fer un parell de coses.

Alguns d'ells tenen a veure amb augmentar la seguretat d'Apache i MySQL/MariaDB, mentre que altres poden ser aplicables o no segons la nostra configuració o necessitats.

Per exemple, segons l'ús esperat del servidor de bases de dades, és possible que vulguem canviar el directori de dades predeterminat (/var/lib/mysql) a una ubicació diferent. Aquest és el cas quan s'espera que aquest directori creixi a causa d'un ús elevat.

En cas contrari, el sistema de fitxers on s'emmagatzema /var pot col·lapsar-se en un moment i provocar un error en tot el sistema. Un altre escenari on canviar el directori predeterminat és quan tenim una compartició de xarxa dedicada que volem utilitzar per emmagatzemar les nostres dades reals.

Per aquest motiu, en aquest article, explicarem com canviar el directori de dades MySQL/MariaDB predeterminat a un camí diferent en un servidor CentOS/RHEL 7 i distribucions Ubuntu/Debian.

Tot i que utilitzarem MariaDB, els conceptes explicats i els passos realitzats en aquest article s'apliquen tant a MySQL com a MariaDB, tret que s'indiqui el contrari.

Canviant el directori de dades MySQL/MariaDB predeterminat

Nota: suposarem que el nostre nou directori de dades és /mnt/mysql-data. És important tenir en compte que aquest directori hauria de ser propietat de mysql:mysql.

# mkdir /mnt/mysql-data
# chown -R mysql:mysql /mnt/mysql-data

Per a la vostra comoditat, hem dividit el procés en 5 passos fàcils de seguir:

Per començar, val la pena identificar el directori de dades actual mitjançant l'ordre següent. No suposeu només que encara és /var/lib/mysql ja que es podria haver canviat en el passat.

# mysql -u root -p -e "SELECT @@datadir;"

Després d'introduir la contrasenya de MySQL, la sortida hauria de ser similar a.

Per evitar la corrupció de dades, atureu el servei si s'està executant actualment abans de continuar. Utilitzeu les ordres conegudes de systemd per fer-ho:

------------- On SystemD ------------- 
# systemctl stop mariadb
# systemctl is-active mariadb

------------- On SysVInit ------------- 
# service mysqld stop
# service mysqld status

OR

# service mysql stop
# service mysql status

Si el servei s'ha desactivat, la sortida de l'última ordre hauria de ser la següent:

A continuació, copieu recursivament el contingut de /var/lib/mysql a /mnt/mysql-data conservant els permisos i les marques de temps originals:

# cp -R -p /var/lib/mysql/* /mnt/mysql-data

Editeu el fitxer de configuració (my.cnf) per indicar el nou directori de dades (/mnt/mysql-data en aquest cas).

# vi /etc/my.cnf
OR
# vi /etc/mysql/my.cnf

Localitzeu les seccions [mysqld] i [client] i feu els canvis següents:

Under [mysqld]:
datadir=/mnt/mysql-data
socket=/mnt/mysql-data/mysql.sock

Under [client]:
port=3306
socket=/mnt/mysql-data/mysql.sock

Deseu els canvis i, a continuació, continueu amb el pas següent.

Aquest pas només és aplicable a RHEL/CentOS i els seus derivats.

Afegiu el context de seguretat SELinux a /mnt/mysql-data abans de reiniciar MariaDB.

# semanage fcontext -a -t mysqld_db_t "/mnt/mysql-data(/.*)?"
# restorecon -R /mnt/mysql-data

A continuació, reinicieu el servei 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

Ara, utilitzeu la mateixa ordre que al pas 1 per verificar la ubicació del nou directori de dades:

# mysql -u root -p -e "SELECT @@datadir;"

Inicieu la sessió a MariaDB, creeu una nova base de dades i després comproveu /mnt/mysql-data:

# mysql -u root -p -e "CREATE DATABASE tecmint;"

Felicitats! Heu canviat correctament el directori de dades per a MySQL o MariaDB.

En aquesta publicació, hem parlat de com canviar el directori de dades en un servidor MySQL o MariaDB que s'executa a les distribucions CentOS/RHEL 7 i Ubuntu/Debian.

Tens alguna pregunta o comentari sobre aquest article? No dubteu a fer-nos-ho saber mitjançant el formulari següent: sempre ens complau saber de vosaltres!