Website-Suche

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!