Kā nomainīt noklusējuma MySQL/MariaDB datu direktoriju Linux


Pēc LAMP kaudzes komponentu instalēšanas CentOS/RHEL 7 serverī, iespējams, vēlēsities veikt dažas lietas.

Daži no tiem ir saistīti ar Apache un MySQL/MariaDB drošības palielināšanu, bet citi var būt piemērojami vai nē atbilstoši mūsu iestatījumiem vai vajadzībām.

Piemēram, pamatojoties uz paredzamo datu bāzes servera izmantošanu, mēs varētu vēlēties mainīt noklusējuma datu direktoriju (/var/lib/mysql ) uz citu vietu. Tas ir gadījums, kad ir sagaidāms, ka šāda direktorija pieaugs augsta lietojuma dēļ.

Pretējā gadījumā failu sistēma, kurā glabājas /var , vienā brīdī var sabrukt, izraisot visas sistēmas kļūmi. Vēl viens scenārijs, kad noklusējuma direktorija mainīšana ir tad, kad mums ir īpaša tīkla daļa, kuru mēs vēlamies izmantot faktisko datu glabāšanai.

Šī iemesla dēļ šajā rakstā mēs paskaidrosim, kā mainīt noklusējuma MySQL/MariaDB datu direktoriju uz citu ceļu CentOS/RHEL 7 serverī un Ubuntu/Debian izplatījumos.

Lai gan mēs izmantosim MariaDB, šajā rakstā izskaidrotie jēdzieni un veiktās darbības attiecas gan uz MySQL, gan uz MariaDB, ja nav norādīts citādi.

Noklusējuma MySQL/MariaDB Data Directory mainīšana

Piezīme. Mēs pieņemsim, ka mūsu jaunais datu katalogs ir /mnt/mysql-data . Ir svarīgi atzīmēt, ka šis direktorijs pieder mysql: mysql .

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

Jūsu ērtībai process ir sadalīts 5 viegli izpildāmās darbībās:

Lai sāktu, ir vērts un labi identificēt pašreizējo datu direktoriju, izmantojot šādu komandu. Ne tikai pieņemiet, ka tas joprojām ir /var/lib/mysql , jo to varēja mainīt agrāk.

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

Pēc MySQL paroles ievadīšanas izvadei vajadzētu būt līdzīgai.

Lai izvairītos no datu bojāšanas, pirms turpināt, apturiet pakalpojumu, ja tas pašlaik darbojas. Lai to izdarītu, izmantojiet sistēmai labi zināmas komandas:

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

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

OR

# service mysql stop
# service mysql status

Ja pakalpojums ir atcelts, pēdējās komandas iznākumam jābūt šādam:

Pēc tam rekursīvi nokopējiet /var/lib/mysql saturu uz /mnt/mysql-data , saglabājot sākotnējās atļaujas un laika zīmogus:

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

Rediģējiet konfigurācijas failu ( my.cnf ), lai norādītu jauno datu direktoriju (šajā gadījumā /mnt/mysql-data ).

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

Atrodiet sadaļas [mysqld] un [client] un veiciet šādas izmaiņas:

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

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

Saglabājiet izmaiņas un pēc tam veiciet nākamo darbību.

Šis solis attiecas tikai uz RHEL/CentOS un tā atvasinājumiem.

Pirms restartējat MariaDB, pievienojiet SELinux drošības kontekstu vietnei /mnt/mysql-data .

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

Pēc tam restartējiet MySQL pakalpojumu.

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

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

OR

# service mysql stop
# service mysql status

Lai pārbaudītu jaunā datu direktorija atrašanās vietu, izmantojiet to pašu komandu kā 1. darbībā:

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

Piesakieties vietnē MariaDB, izveidojiet jaunu datu bāzi un pēc tam pārbaudiet /mnt/mysql-data :

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

Apsveicam! Jūs esat veiksmīgi mainījis MySQL vai MariaDB datu direktoriju.

Šajā amatā mēs esam apsprieduši, kā mainīt datu direktoriju MySQL vai MariaDB serverī, kas darbojas CentOS/RHEL 7 un Ubuntu/Debian izplatījumos.

Vai jums ir kādi jautājumi vai komentāri par šo rakstu? Droši paziņojiet mums, izmantojot zemāk esošo veidlapu - mēs vienmēr priecājamies par jums dzirdēt!