Kuinka muuttaa MySQL/MariaDB-oletustietohakemisto Linuxissa


Kun olet asentanut LAMP-pinon komponentit CentOS/RHEL 7 -palvelimelle, sinun kannattaa tehdä muutamia asioita.

Jotkut niistä liittyvät Apachen ja MySQL/MariaDB:n turvallisuuden lisäämiseen, kun taas toiset voivat olla soveltuvia tai ei sovellu asetuksiemme tai tarpeidemme mukaan.

Esimerkiksi tietokantapalvelimen odotetun käytön perusteella saatamme haluta muuttaa oletusarvoisen data-hakemiston (/var/lib/mysql) toiseen paikkaan. Näin on silloin, kun tällaisen hakemiston odotetaan kasvavan suuren käytön vuoksi.

Muuten tiedostojärjestelmä, johon /var on tallennettu, voi romahtaa jossain vaiheessa, jolloin koko järjestelmä epäonnistuu. Toinen skenaario, jossa oletushakemistoa vaihdetaan, on se, että meillä on oma verkkojako, jota haluamme käyttää todellisten tietojemme tallentamiseen.

Tästä syystä tässä artikkelissa selitämme, kuinka MySQL/MariaDB-oletustietohakemisto muutetaan eri poluksi CentOS/RHEL 7 -palvelimessa ja Ubuntu/Debian-jakeluissa.

Vaikka käytämmekin MariaDB:tä, tässä artikkelissa selitetyt käsitteet ja vaiheet koskevat sekä MySQL:ää että MariaDB:tä, ellei toisin mainita.

Oletusarvoisen MySQL/MariaDB-tietohakemiston muuttaminen

Huomaa: oletamme, että uusi tietohakemistomme on /mnt/mysql-data. On tärkeää huomata, että tämän hakemiston tulee omistaa mysql:mysql.

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

Olemme jakaneet prosessin viiteen helposti seurattavaan vaiheeseen:

Vaihe 1: Tunnista nykyinen MySQL-tietohakemisto

Aluksi on syytä ja hyvin tunnistaa nykyinen tietohakemisto seuraavalla komennolla. Älä vain oleta, että se on edelleen /var/lib/mysql, koska sitä olisi voitu muuttaa aiemmin.

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

Kun olet syöttänyt MySQL-salasanan, tulosteen tulee olla samanlainen kuin.

Vaihe 2: Kopioi MySQL-tietohakemisto uuteen sijaintiin

Vältä tietojen korruptio pysäyttämällä palvelu, jos se on parhaillaan käynnissä, ennen kuin jatkat. Käytä tähän tunnettuja systemd-komentoja:

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

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

OR

service mysql stop
service mysql status

Jos palvelu on katkaistu, viimeisen komennon tulee olla seuraava:

Kopioi sitten rekursiivisesti tiedoston /var/lib/mysql sisältö tiedostoon /mnt/mysql-data säilyttäen alkuperäiset luvat ja aikaleimat:

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

Vaihe 3: Määritä uusi MySQL-tietohakemisto

Muokkaa asetustiedostoa (my.cnf) ilmoittamaan uusi tietohakemisto (tässä tapauksessa /mnt/mysql-data).

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

Etsi osiot [mysqld] ja [client] ja tee seuraavat muutokset:

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

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

Tallenna muutokset ja jatka sitten seuraavaan vaiheeseen.

Vaihe 4: Aseta SELinux Security Context arvoon Data Directory

Tämä vaihe koskee vain RHEL/CentOS:ää ja sen johdannaisia.

Lisää SELinux-suojauskonteksti kohtaan /mnt/mysql-data, ennen kuin käynnistät MariaDB:n uudelleen.

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

Käynnistä seuraavaksi MySQL-palvelu uudelleen.

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

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

OR

service mysql stop
service mysql status

Käytä nyt samaa komentoa kuin vaiheessa 1 uuden tietohakemiston sijainnin vahvistamiseksi:

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

Vaihe 5: Luo MySQL-tietokanta vahvistaaksesi tietohakemiston

Kirjaudu MariaDB:hen, luo uusi tietokanta ja tarkista sitten /mnt/mysql-data:

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

Onnittelut! Olet vaihtanut onnistuneesti MySQL- tai MariaDB-tietohakemiston.

Yhteenveto

Tässä viestissä olemme keskustelleet kuinka muuttaa tietohakemistoa MySQL- tai MariaDB-palvelimessa, joka toimii CentOS/RHEL 7- ja Ubuntu/Debian-jakeluissa.

Onko sinulla kysyttävää tai kommentteja tästä artikkelista? Kerro meille vapaasti alla olevalla lomakkeella – olemme aina iloisia kuullessamme sinusta!