Kako spremeniti privzeti podatkovni imenik MySQL/MariaDB v Linuxu


Po namestitvi komponent sklada LAMP na strežnik CentOS/RHEL 7 lahko nekaj stvari naredite.

Nekateri izmed njih so povezani z večjo varnostjo Apache in MySQL/MariaDB, drugi pa se lahko uporabljajo ali ne glede na naše nastavitve ali potrebe.

Na primer, glede na pričakovano uporabo strežnika baz podatkov bomo morda želeli spremeniti privzeti podatkovni imenik (/var/lib/mysql ) na drugo mesto. To je primer, ko se pričakuje, da bo takšen imenik rasel zaradi velike uporabe.

V nasprotnem primeru se lahko datotečni sistem, v katerem je shranjena /var , v določenem trenutku sesuje in povzroči odpoved celotnega sistema. Drug scenarij, pri katerem je privzeti imenik spremenjen, je namenski omrežni delež, ki ga želimo uporabiti za shranjevanje dejanskih podatkov.

Iz tega razloga bomo v tem članku razložili, kako spremeniti privzeti podatkovni imenik MySQL/MariaDB na drugo pot na strežniku CentOS/RHEL 7 in distribucijah Ubuntu/Debian.

Čeprav bomo uporabili MariaDB, razloženi koncepti in koraki v tem članku veljajo tako za MySQL kot za MariaDB, če ni drugače navedeno.

Spreminjanje privzetega podatkovnega imenika MySQL/MariaDB

Opomba: Predpostavili bomo, da je naš novi podatkovni imenik /mnt/mysql-data . Pomembno je omeniti, da mora biti ta imenik v lasti mysql: mysql .

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

Za vaše udobje smo postopek razdelili na 5 enostavnih korakov:

Za začetek je vredno in dobro prepoznati trenutni podatkovni imenik z naslednjim ukazom. Ne samo domnevati, da je še vedno /var/lib/mysql , saj bi ga lahko v preteklosti že spreminjali.

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

Ko vnesete geslo MySQL, mora biti rezultat podoben.

Da se izognete poškodbam podatkov, pred nadaljevanjem ustavite storitev, če trenutno deluje. Za to uporabite dobro znane ukaze 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

Če je bila storitev zaustavljena, mora biti rezultat zadnjega ukaza naslednji:

Nato rekurzivno kopirajte vsebino /var/lib/mysql v /mnt/mysql-data , pri čemer ohranite izvirna dovoljenja in časovne žige:

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

Uredite konfiguracijsko datoteko ( my.cnf ), da označite nov podatkovni imenik (/mnt/mysql-data v tem primeru).

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

Poiščite razdelka [mysqld] in [client] in naredite naslednje spremembe:

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

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

Shranite spremembe in nadaljujte z naslednjim korakom.

Ta korak velja samo za RHEL/CentOS in njegove derivate.

Pred ponovnim zagonom MariaDB dodajte varnostni kontekst SELinux v /mnt/mysql-data .

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

Nato znova zaženite storitev 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

Zdaj z istim ukazom kot v 1. koraku preverite lokacijo novega podatkovnega imenika:

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

Prijavite se v MariaDB, ustvarite novo bazo podatkov in nato preverite /mnt/mysql-data :

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

Čestitamo! Uspešno ste spremenili podatkovni imenik za MySQL ali MariaDB.

V tej objavi smo razpravljali o tem, kako spremeniti podatkovni imenik v strežniku MySQL ali MariaDB, ki deluje na distribucijah CentOS/RHEL 7 in Ubuntu/Debian.

Imate vprašanja ali komentarje o tem članku? Prosimo, da nas obvestite s pomočjo spodnjega obrazca - vedno smo veseli vašega odziva!