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ć!