Sådan ændres et standard MySQL/MariaDB Data Directory i Linux


Efter installation af komponenterne i en LAMP-stak på en CentOS/RHEL 7-server er der et par ting, du måske vil gøre.

Nogle af dem har at gøre med at øge sikkerheden for Apache og MySQL/MariaDB, mens andre kan være anvendelige eller ikke i henhold til vores opsætning eller behov.

Baseret på den forventede brug af databaseserveren kan vi f.eks. Ændre standarddatamappen (/var/lib/mysql ) til en anden placering. Dette er tilfældet, når en sådan mappe forventes at vokse på grund af høj brug.

Ellers kan filsystemet, hvor /var er gemt, kollapse på et tidspunkt, hvilket får hele systemet til at mislykkes. Et andet scenario, hvor ændring af standardkataloget er, når vi har en dedikeret netværksshare, som vi vil bruge til at gemme vores faktiske data.

Af denne grund forklarer vi i denne artikel, hvordan man ændrer standard MySQL/MariaDB-datakataloget til en anden sti på en CentOS/RHEL 7-server og Ubuntu/Debian-distributioner.

Selvom vi vil bruge MariaDB, gælder de forklarede begreber og trinene i denne artikel både på MySQL og på MariaDB, medmindre andet er angivet.

Ændring af standard MySQL/MariaDB Data Directory

Bemærk: Vi antager, at vores nye datakatalog er /mnt/mysql-data . Det er vigtigt at bemærke, at denne mappe skal ejes af mysql: mysql .

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

For nemheds skyld har vi opdelt processen i 5 trin, der er nemme at følge:

Til at begynde med er det værd og godt at identificere den aktuelle datakatalog ved hjælp af følgende kommando. Antag ikke bare, at det stadig er /var/lib/mysql , da det tidligere kunne have været ændret.

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

Når du har indtastet MySQL-adgangskoden, skal outputen svare til.

For at undgå datakorruption skal du stoppe tjenesten, hvis den i øjeblikket kører, inden du fortsætter. Brug systemd-velkendte kommandoer til at gø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 er bragt ned, skal output fra den sidste kommando være som følger:

Kopier derefter rekursivt indholdet af /var/lib/mysql til /mnt/mysql-data og bevar originale tilladelser og tidsstempler:

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

Rediger konfigurationsfilen ( my.cnf ) for at angive den nye datakatalog (/mnt/mysql-data i dette tilfælde).

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

Find sektionerne [mysqld] og [client] , og foretag følgende ændringer:

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

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

Gem ændringerne, og fortsæt derefter med næste trin.

Dette trin gælder kun for RHEL/CentOS og dets derivater.

Føj SELinux-sikkerhedskonteksten til /mnt/mysql-data før du genstarter MariaDB.

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

Genstart derefter MySQL-tjenesten.

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

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

OR

# service mysql stop
# service mysql status

Brug nu den samme kommando som i trin 1 for at kontrollere placeringen af den nye datakatalog:

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

Log ind på MariaDB, opret en ny database og tjek derefter /mnt/mysql-data :

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

Tillykke! Du har ændret datakataloget til MySQL eller MariaDB.

I dette indlæg har vi diskuteret, hvordan man ændrer datakataloget i en MySQL- eller MariaDB-server, der kører på CentOS/RHEL 7- og Ubuntu/Debian-distributioner.

Har du spørgsmål eller kommentarer til denne artikel? Du er velkommen til at give os besked ved hjælp af nedenstående formular - vi er altid glade for at høre fra dig!