So ändern Sie ein Standard-MySQL/MariaDB-Datenverzeichnis unter Linux
Nach der Installation der Komponenten eines LAMP-Stacks auf einem CentOS/RHEL 7-Server möchten Sie möglicherweise einige Dinge tun.
Einige davon haben mit der Erhöhung der Sicherheit von Apache und MySQL/MariaDB zu tun, während andere je nach unserem Setup oder Bedarf anwendbar sein können oder nicht.
Basierend auf der erwarteten Nutzung des Datenbankservers möchten wir beispielsweise das Standardverzeichnis data (/var/lib/mysql
) an einen anderen Speicherort ändern. Dies ist der Fall, wenn erwartet wird, dass ein solches Verzeichnis aufgrund der hohen Auslastung wächst.
Andernfalls könnte das Dateisystem, in dem /var
gespeichert ist, irgendwann zusammenbrechen und das gesamte System ausfallen lassen. Ein weiteres Szenario, in dem wir das Standardverzeichnis ändern, ist, wenn wir über eine dedizierte Netzwerkfreigabe verfügen, die wir zum Speichern unserer tatsächlichen Daten verwenden möchten.
Aus diesem Grund erklären wir in diesem Artikel, wie Sie das Standard-MySQL-/MariaDB-Datenverzeichnis auf einem CentOS/RHEL 7-Server und Ubuntu/Debian-Distributionen in einen anderen Pfad ändern.
Obwohl wir MariaDB verwenden werden, gelten die in diesem Artikel erläuterten Konzepte und Schritte sowohl für MySQL als auch für MariaDB, sofern nicht anders angegeben.
Ändern des standardmäßigen MySQL/MariaDB-Datenverzeichnisses
Hinweis: Wir gehen davon aus, dass unser neues Datenverzeichnis /mnt/mysql-data
ist. Es ist wichtig zu beachten, dass dieses Verzeichnis mysql:mysql
gehören sollte.
mkdir /mnt/mysql-data
chown -R mysql:mysql /mnt/mysql-data
Zur Vereinfachung haben wir den Vorgang in fünf leicht verständliche Schritte unterteilt:
Schritt 1: Identifizieren Sie das aktuelle MySQL-Datenverzeichnis
Zunächst lohnt es sich, das aktuelle Datenverzeichnis mit dem folgenden Befehl zu ermitteln. Gehen Sie nicht einfach davon aus, dass es immer noch /var/lib/mysql
ist, da es in der Vergangenheit möglicherweise geändert wurde.
mysql -u root -p -e "SELECT @@datadir;"
Nachdem Sie das MySQL-Passwort eingegeben haben, sollte die Ausgabe ähnlich sein.
Schritt 2: Kopieren Sie das MySQL-Datenverzeichnis an einen neuen Speicherort
Um eine Datenbeschädigung zu vermeiden, stoppen Sie den Dienst, falls er gerade ausgeführt wird, bevor Sie fortfahren. Verwenden Sie dazu die bekannten Befehle 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
Wenn der Dienst heruntergefahren wurde, sollte die Ausgabe des letzten Befehls wie folgt lauten:
Kopieren Sie dann rekursiv den Inhalt von /var/lib/mysql
nach /mnt/mysql-data
und behalten Sie dabei die ursprünglichen Berechtigungen und Zeitstempel bei:
cp -R -p /var/lib/mysql/* /mnt/mysql-data
Schritt 3: Konfigurieren Sie ein neues MySQL-Datenverzeichnis
Bearbeiten Sie die Konfigurationsdatei (my.cnf
), um das neue Datenverzeichnis anzugeben (in diesem Fall /mnt/mysql-data
).
vi /etc/my.cnf
OR
vi /etc/mysql/my.cnf
Suchen Sie die Abschnitte [mysqld]
und [client]
und nehmen Sie die folgenden Änderungen vor:
Under [mysqld]:
datadir=/mnt/mysql-data
socket=/mnt/mysql-data/mysql.sock
Under [client]:
port=3306
socket=/mnt/mysql-data/mysql.sock
Speichern Sie die Änderungen und fahren Sie dann mit dem nächsten Schritt fort.
Schritt 4: Legen Sie den SELinux-Sicherheitskontext auf „Datenverzeichnis“ fest
Dieser Schritt gilt nur für RHEL/CentOS und seine Derivate.
Fügen Sie den SELinux-Sicherheitskontext zu /mnt/mysql-data
hinzu, bevor Sie MariaDB neu starten.
semanage fcontext -a -t mysqld_db_t "/mnt/mysql-data(/.*)?"
restorecon -R /mnt/mysql-data
Starten Sie anschließend den MySQL-Dienst neu.
------------- On SystemD -------------
systemctl stop mariadb
systemctl is-active mariadb
------------- On SysVInit -------------
service mysqld stop
service mysqld status
OR
service mysql stop
service mysql status
Verwenden Sie nun denselben Befehl wie in Schritt 1, um den Speicherort des neuen Datenverzeichnisses zu überprüfen:
mysql -u root -p -e "SELECT @@datadir;"
Schritt 5: Erstellen Sie eine MySQL-Datenbank, um das Datenverzeichnis zu bestätigen
Melden Sie sich bei MariaDB an, erstellen Sie eine neue Datenbank und überprüfen Sie dann /mnt/mysql-data
:
mysql -u root -p -e "CREATE DATABASE tecmint;"
Glückwunsch! Sie haben das Datenverzeichnis für MySQL oder MariaDB erfolgreich geändert.
Zusammenfassung
In diesem Beitrag haben wir besprochen, wie man das Datenverzeichnis auf einem MySQL- oder MariaDB-Server ändert, der unter CentOS/RHEL 7- und Ubuntu/Debian-Distributionen läuft.
Haben Sie Fragen oder Kommentare zu diesem Artikel? Teilen Sie uns gerne über das untenstehende Formular mit – wir freuen uns immer von Ihnen zu hören!