sql >> Databasteknik >  >> RDS >> Mysql

Hur man ändrar en standard MySQL/MariaDB-datakatalog i Linux

Efter att ha installerat komponenterna i en LAMP-stack på en CentOS/RHEL 7-server finns det ett par saker du kanske vill göra.

Vissa av dem har att göra med att öka säkerheten för Apache och MySQL / MariaDB, medan andra kan vara tillämpliga eller inte enligt våra inställningar eller behov.

Till exempel, baserat på den förväntade användningen av databasservern, kanske vi vill ändra standard data katalog (/var/lib/mysql ) till en annan plats. Detta är fallet när en sådan katalog förväntas växa på grund av hög användning.

Annars är filsystemet /var lagras kan kollapsa vid ett tillfälle vilket gör att hela systemet misslyckas. Ett annat scenario där vi ändrar standardkatalogen är när vi har en dedikerad nätverksresurs som vi vill använda för att lagra våra faktiska data.

Av denna anledning kommer vi i den här artikeln att förklara hur man ändrar standarddatakatalogen MySQL / MariaDB till en annan sökväg på en CentOS/RHEL 7-server och Ubuntu/Debian-distributioner.

Även om vi kommer att använda MariaDB , begreppen som förklaras och de steg som tas i den här artikeln gäller både MySQL och till MariaDB om inte annat anges.

Ändra standard MySQL/MariaDB Data Directory

Obs :Vi kommer att anta att vår nya datakatalog är /mnt/mysql-data . Det är viktigt att notera att den här katalogen bör ägas av mysql:mysql .

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

För din bekvämlighet har vi delat upp processen i fem enkla steg:

Steg 1:Identifiera aktuell MySQL-datakatalog

Till att börja med är det värt och bra att identifiera den aktuella datakatalogen med följande kommando. Anta inte bara att det fortfarande är /var/lib/mysql eftersom det kunde ha ändrats tidigare.

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

När du har angett MySQL-lösenordet bör utdata vara liknande.

Steg 2:Kopiera MySQL-datakatalogen till en ny plats

För att undvika datakorruption, stoppa tjänsten om den körs för närvarande innan du fortsätter. Använd systemd välkända kommandon för att göra 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

Om tjänsten har tagits ner, bör utdata från det sista kommandot vara som följer:

Kopiera sedan rekursivt innehållet i /var/lib/mysql till /mnt/mysql-data bevara ursprungliga behörigheter och tidsstämplar:

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

Steg 3:Konfigurera en ny MySQL-datakatalog

Redigera konfigurationsfilen (my.cnf ) för att ange den nya datakatalogen (/mnt/mysql-data i det här fallet).

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

Leta upp [mysqld] och [client] och gör följande ändringar:

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

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

Spara ändringarna och fortsätt sedan med nästa steg.

Steg 4:Ställ in SELinux Security Context till Data Directory

Det här steget är endast tillämpligt på RHEL/CentOS och dess derivat.

Lägg till SELinux säkerhetskontext till /mnt/mysql-data innan du startar om MariaDB.

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

Starta sedan om MySQL-tjänsten.

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

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

OR

# service mysql stop
# service mysql status

Använd nu samma kommando som i Steg 1 för att verifiera platsen för den nya datakatalogen:

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

Steg 5:Skapa MySQL-databas för att bekräfta datakatalogen

Logga in på MariaDB, skapa en ny databas och kontrollera sedan /mnt/mysql-data :

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

Grattis! Du har framgångsrikt ändrat datakatalogen för MySQL eller MariaDB.

Sammanfattning

I det här inlägget har vi diskuterat hur man ändrar datakatalogen i en MySQL- eller MariaDB-server som körs på CentOS/RHEL 7 och Ubuntu/Debian-distributioner.

Har du några frågor eller kommentarer om den här artikeln? Meddela oss gärna genom att använda formuläret nedan – vi är alltid glada att höra från dig!


  1. MySQL på Docker - Hur du containeriserar din databas:Nytt vitbok

  2. SUBSTR() Funktion i Oracle

  3. Så här löser du ORA-00900

  4. Hur man beräknar procentuell tillväxt vecka över vecka i MySQL