Wyszukiwanie w witrynie

Jak zmienić domyślny katalog danych MySQL/MariaDB w systemie Linux


Po zainstalowaniu komponentów stosu LAMP na serwerze CentOS/RHEL 7 możesz chcieć zrobić kilka rzeczy.

Niektóre z nich dotyczą zwiększenia bezpieczeństwa Apache i MySQL/MariaDB, podczas gdy inne mogą mieć zastosowanie lub nie, w zależności od naszej konfiguracji lub potrzeb.

Na przykład, biorąc pod uwagę oczekiwane wykorzystanie serwera bazy danych, możemy chcieć zmienić domyślny katalog data (/var/lib/mysql) na inną lokalizację. Dzieje się tak w przypadku, gdy oczekuje się, że taki katalog będzie się powiększał ze względu na duże wykorzystanie.

W przeciwnym razie system plików, w którym przechowywany jest /var, może w pewnym momencie się załamać, powodując awarię całego systemu. Inny scenariusz, w którym zmiana katalogu domyślnego ma miejsce, gdy mamy dedykowany udział sieciowy, którego chcemy używać do przechowywania naszych rzeczywistych danych.

Z tego powodu w tym artykule wyjaśnimy, jak zmienić domyślny katalog danych MySQL/MariaDB na inną ścieżkę na serwerze CentOS/RHEL 7 i dystrybucjach Ubuntu/Debian.

Chociaż będziemy używać MariaDB, pojęcia wyjaśnione w tym artykule i kroki podjęte w tym artykule dotyczą zarówno MySQL, jak i MariaDB, o ile nie zaznaczono inaczej.

Zmiana domyślnego katalogu danych MySQL/MariaDB

Uwaga: założymy, że nasz nowy katalog danych to /mnt/mysql-data. Należy pamiętać, że właścicielem tego katalogu powinien być mysql:mysql.

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

Dla Twojej wygody podzieliliśmy proces na 5 łatwych do wykonania kroków:

Krok 1: Zidentyfikuj bieżący katalog danych MySQL

Na początek warto i warto zidentyfikować bieżący katalog danych za pomocą następującego polecenia. Nie zakładaj, że nadal jest to /var/lib/mysql, ponieważ mogło zostać zmienione w przeszłości.

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

Po wprowadzeniu hasła MySQL wynik powinien być podobny do.

Krok 2: Skopiuj katalog danych MySQL do nowej lokalizacji

Aby uniknąć uszkodzenia danych, przed kontynuowaniem zatrzymaj usługę, jeśli jest aktualnie uruchomiona. Użyj w tym celu dobrze znanych poleceń 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

Jeśli usługa została wyłączona, wynik ostatniego polecenia powinien wyglądać następująco:

Następnie skopiuj rekurencyjnie zawartość /var/lib/mysql do /mnt/mysql-data, zachowując oryginalne uprawnienia i znaczniki czasu:

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

Krok 3: Skonfiguruj nowy katalog danych MySQL

Edytuj plik konfiguracyjny (my.cnf), aby wskazać nowy katalog danych (w tym przypadku /mnt/mysql-data).

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

Znajdź sekcje [mysqld] i [client] i wprowadź następujące zmiany:

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

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

Zapisz zmiany i przejdź do następnego kroku.

Krok 4: Ustaw kontekst zabezpieczeń SELinux na katalog danych

Ten krok dotyczy tylko systemu RHEL/CentOS i jego pochodnych.

Dodaj kontekst zabezpieczeń SELinux do /mnt/mysql-data przed ponownym uruchomieniem MariaDB.

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

Następnie uruchom ponownie usługę 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

Teraz użyj tego samego polecenia, co w Kroku 1, aby sprawdzić lokalizację nowego katalogu danych:

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

Krok 5: Utwórz bazę danych MySQL, aby potwierdzić katalog danych

Zaloguj się do MariaDB, utwórz nową bazę danych, a następnie sprawdź /mnt/mysql-data:

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

Gratulacje! Pomyślnie zmieniłeś katalog danych dla MySQL lub MariaDB.

Streszczenie

W tym poście omówiliśmy, jak zmienić katalog danych na serwerze MySQL lub MariaDB działającym w dystrybucjach CentOS/RHEL 7 i Ubuntu/Debian.

Czy masz jakieś pytania lub uwagi dotyczące tego artykułu? Daj nam znać za pomocą poniższego formularza – zawsze miło nam Cię poznać!