Vyhledávání na webu

Jak změnit výchozí adresář dat MySQL/MariaDB v Linuxu


Po instalaci komponent zásobníku LAMP na server CentOS/RHEL 7 existuje několik věcí, které možná budete chtít udělat.

Některé z nich mají co do činění se zvýšením zabezpečení Apache a MySQL/MariaDB, zatímco jiné mohou být použitelné nebo ne podle našeho nastavení nebo potřeb.

Například na základě očekávaného využití databázového serveru můžeme chtít změnit výchozí adresář data (/var/lib/mysql) na jiné místo. To je případ, kdy se očekává, že takový adresář bude růst kvůli vysokému využití.

Jinak se souborový systém, kde je uložen /var, může v jednom bodě zhroutit a způsobit selhání celého systému. Dalším scénářem, kdy se mění výchozí adresář, je situace, kdy máme vyhrazenou síťovou sdílenou složku, kterou chceme použít k ukládání našich skutečných dat.

Z tohoto důvodu v tomto článku vysvětlíme, jak změnit výchozí datový adresář MySQL/MariaDB na jinou cestu na serveru CentOS/RHEL 7 a distribucích Ubuntu/Debian.

I když budeme používat MariaDB, vysvětlené koncepty a kroky provedené v tomto článku platí jak pro MySQL, tak pro MariaDB, pokud není uvedeno jinak.

Změna výchozího adresáře dat MySQL/MariaDB

Poznámka: Budeme předpokládat, že náš nový datový adresář je /mnt/mysql-data. Je důležité poznamenat, že tento adresář by měl vlastnit mysql:mysql.

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

Pro vaše pohodlí jsme proces rozdělili do 5 snadno pochopitelných kroků:

Krok 1: Identifikujte aktuální adresář dat MySQL

Pro začátek je vhodné a vhodné identifikovat aktuální datový adresář pomocí následujícího příkazu. Nepředpokládejte, že je to stále /var/lib/mysql, protože mohlo být v minulosti změněno.

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

Po zadání hesla MySQL by měl být výstup podobný jako.

Krok 2: Zkopírujte adresář MySQL Data Directory do nového umístění

Chcete-li předejít poškození dat, zastavte službu, pokud je aktuálně spuštěna, než budete pokračovat. Použijte k tomu známé příkazy systemd:

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

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

OR

service mysql stop
service mysql status

Pokud byla služba spuštěna, výstup posledního příkazu by měl být následující:

Poté rekurzivně zkopírujte obsah /var/lib/mysql do /mnt/mysql-data, přičemž zachováte původní oprávnění a časová razítka:

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

Krok 3: Nakonfigurujte nový adresář dat MySQL

Upravte konfigurační soubor (my.cnf), aby označoval nový datový adresář (v tomto případě /mnt/mysql-data).

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

Vyhledejte sekce [mysqld] a [client] a proveďte následující změny:

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

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

Uložte změny a pokračujte dalším krokem.

Krok 4: Nastavte SELinux Security Context na Data Directory

Tento krok je použitelný pouze pro RHEL/CentOS a jeho deriváty.

Před restartováním MariaDB přidejte kontext zabezpečení SELinux do /mnt/mysql-data.

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

Poté restartujte službu 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

Nyní použijte stejný příkaz jako v Kroku 1 k ověření umístění nového datového adresáře:

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

Krok 5: Vytvořte databázi MySQL pro potvrzení datového adresáře

Přihlaste se do MariaDB, vytvořte novou databázi a poté zkontrolujte /mnt/mysql-data:

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

Gratulujeme! Úspěšně jste změnili datový adresář pro MySQL nebo MariaDB.

souhrn

V tomto příspěvku jsme diskutovali o tom, jak změnit datový adresář na serveru MySQL nebo MariaDB běžícím na distribucích CentOS/RHEL 7 a Ubuntu/Debian.

Máte nějaké dotazy nebo připomínky k tomuto článku? Neváhejte a dejte nám vědět pomocí formuláře níže – vždy nás rádi uslyšíme!