Hvordan endre en standard MySQL/MariaDB-datakatalog i Linux


Etter å ha installert komponentene til en LAMP-stabel på en CentOS/RHEL 7-server, er det et par ting du kanskje vil gjøre.

Noen av dem har å gjøre med å øke sikkerheten til Apache og MySQL/MariaDB, mens andre kan være aktuelle eller ikke i henhold til vårt oppsett eller behov.

For eksempel, basert på forventet bruk av databaseserveren, vil vi kanskje endre standard data-katalog (/var/lib/mysql) til en annen plassering. Dette er tilfellet når en slik katalog forventes å vokse på grunn av høy bruk.

Ellers kan filsystemet der /var er lagret, kollapse på et tidspunkt og føre til at hele systemet svikter. Et annet scenario hvor vi endrer standardkatalogen er når vi har en dedikert nettverksandel som vi vil bruke til å lagre våre faktiske data.

Av denne grunn vil vi i denne artikkelen forklare hvordan du endrer standard MySQL/MariaDB-datakatalogen til en annen bane på en CentOS/RHEL 7-server og Ubuntu/Debian-distribusjoner.

Selv om vi vil bruke MariaDB, gjelder konseptene som er forklart og trinnene i denne artikkelen både MySQL og MariaDB med mindre annet er angitt.

Endre standard MySQL/MariaDB-datakatalog

Merk: Vi kommer til å anta at vår nye datakatalog er /mnt/mysql-data. Det er viktig å merke seg at denne katalogen skal eies av mysql:mysql.

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

For enkelhets skyld har vi delt prosessen inn i 5 enkle trinn:

Trinn 1: Identifiser gjeldende MySQL-datakatalog

Til å begynne med er det verdig og godt å identifisere gjeldende datakatalog ved å bruke følgende kommando. Ikke bare anta at det fortsatt er /var/lib/mysql siden det kan ha blitt endret tidligere.

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

Etter at du har skrevet inn MySQL-passordet, skal utdataene være lik.

Trinn 2: Kopier MySQL-datakatalogen til en ny plassering

For å unngå datakorrupsjon, stopp tjenesten hvis den kjører for øyeblikket før du fortsetter. Bruk systemd velkjente kommandoer for å gjøre det:

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

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

OR

service mysql stop
service mysql status

Hvis tjenesten har blitt fjernet, skal utgangen av den siste kommandoen være som følger:

Kopier deretter innholdet av /var/lib/mysql rekursivt til /mnt/mysql-data og beholder originale tillatelser og tidsstempler:

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

Trinn 3: Konfigurer en ny MySQL-datakatalog

Rediger konfigurasjonsfilen (my.cnf) for å indikere den nye datakatalogen (/mnt/mysql-data i dette tilfellet).

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

Finn delene [mysqld] og [client] og gjør følgende endringer:

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

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

Lagre endringene og fortsett med neste trinn.

Trinn 4: Sett SELinux Security Context til Data Directory

Dette trinnet gjelder bare for RHEL/CentOS og dets derivater.

Legg til SELinux-sikkerhetskonteksten til /mnt/mysql-data før du starter MariaDB på nytt.

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

Start deretter MySQL-tjenesten på nytt.

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

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

OR

service mysql stop
service mysql status

Bruk nå samme kommando som i Trinn 1 for å bekrefte plasseringen til den nye datakatalogen:

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

Trinn 5: Opprett MySQL-database for å bekrefte datakatalogen

Logg på MariaDB, opprett en ny database og sjekk deretter /mnt/mysql-data:

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

Gratulerer! Du har endret datakatalogen for MySQL eller MariaDB.

Sammendrag

I dette innlegget har vi diskutert hvordan du endrer datakatalogen i en MySQL- eller MariaDB-server som kjører på CentOS/RHEL 7 og Ubuntu/Debian-distribusjoner.

Har du spørsmål eller kommentarer til denne artikkelen? Gi oss gjerne beskjed ved å bruke skjemaet nedenfor - vi er alltid glade for å høre fra deg!