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!