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!