MySQL / MariaDB
- Alle Benutzer in MySQL / MariaDB anzeigen
- Datenbanken in MySQL / MariaDB anlegen
- MySQL / MariaDB Verbindung von Außen erlauben
- Backup einer MySQL Datenbank erstellen
- Backup einer MySQL Datenbank einspielen
- Auto_Increment in MySQL / MariaDB zurücksetzen
Alle Benutzer in MySQL / MariaDB anzeigen
Einleitung
Beim Arbeiten mit Datenbanken möchtest du vielleicht einmal nachschauen, welche Benutzer noch angelegt sind, und welchen Zugriff auf die Datenbanken haben. Alte Benutzer können ein sehr hohes Sicherheitsrisiko darstellen, daher sollten Benutzer, die nicht mehr verwendet werden, umgehend beseitigt werden.
Alle Benutzer anzeigen
Um alle Benutzer anzeigen zu lassen, setzt du folgenden Befehl in der SQL Shell ab
SELECT * FROM mysql.user;
Du bekommst dann eine Tabelle zurückgegeben, mit allen Benutzern, die noch angelegt sind, mit Informationen darüber, von welchem Host diese sich anmelden dürfen, wie der Benutzername ist und eine Angabe über das Passwort, natürlich in verschlüsselter Form. Des Weiteren sieht man die Berechtigungen auf den MySQL Server vom jeweiligen Benutzer.
Datenbanken in MySQL / MariaDB anlegen
Einleitung
Um Daten längerfristig zu speichern, bieten sich Datenbanken an. Datenbanken haben den entscheidenden Vorteil das sich mehrere Benutzer gleichzeitig dort anmelden können. Dadurch können Daten schnell und effizient abgefragt werden.
Datenbank anlegen
Wenn du eine Datenbank anlegen möchtest, musst du dir zuerst einen Namen für diese Ausdenken. Der Name darf Buchstaben von A-Z ohne Umlaute enthalten.
Ein Datenbank Namen darf auch keine führende Zahl enthalten. Des weiteren können Sonderzeichen verwendet werden, aber es können nicht alle Sonderzeichen für Datenbank Namen verwendet werden. Beispielweise kann ein Bindestrich (-) nicht verwendet werden, ein Unterstrich(_) ist aber in Ordnung.
Wenn du dich nun für einen Namen entschieden hast, kannst du nun deine Datenbank erstellen.
CREATE DATABASE <datenbank-name>;
MySQL / MariaDB Verbindung von Außen erlauben
Einleitung
In diesem Beitrag gehe ich kurz darauf ein, wie wir auf unserem Linux Server, auf dem MySQL oder MariaDB läuft, Verbindungen von Außen zulassen. Dies benötigen wir z.B. wenn wir eine Applikation nutzen wollen, die auf einem anderen Server läuft als unsere Datenbank. Dafür müssen wir eine Konfigurationsdatei editieren.
Bedenke: Eine Eröffnung von neuen Wegen zum Zugriff auf Server stellen immer neue Sicherheitsrisiken dar! Stelle sicher das dass Risiko bekannt ist!
MySQL
Um in MySQL Verbindungen von Außen zu erlauben, müssen wir die Konfigurationsdatei mit einem Editor unserer Wahl öffnen. Ich verwende dazu nano. Dieser ist auf fast allen Linux Distributionen vorinstalliert und lässt sich sehr leicht verwenden.
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Dort müssen wir den Punkt bind-address finden. Dort müsste aktuell die localhost Adresse (127.0.0.1) stehen. Diesen Wert ändern wir auf 0.0.0.0, um von allen Servern den Zugriff zu erlauben. Möchten wir aber, dass der Zugriff nur von einem bestimmten Server möglich sein soll, setzen wir dort die IP-Adresse des Servers ein.
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 0.0.0.0
Zum Schluss müssen wir nur noch den MySQL Service neu starten. Danach sollte eine Verbindung möglich sein.
sudo systemctl restart mysql
MariaDB
In MariaDB funktioniert das fast genauso wie in MySQL. Es verändert sich lediglich nur die Konfigurationsdatei, die wir öffnen und editieren müssen. Ich verwende hier wieder nano, um die Konfigurationsdatei zu öffnen.
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Bei dieser Datei müssen wir auch den Punkt bind-address finden und diese dann auf die IP-Adresse 0.0.0.0 setzen. Natürlich können wir hier auch wieder die IP-Adresse des Servers eintragen, welcher Zugriff auf den SQL Server haben soll.
Im Anschluss starten wir auch den MySQL Dienst wieder neu.
sudo systemctl restart mysql
Backup einer MySQL Datenbank erstellen
Einleitung
Es ist immer ratsam, Backups von einem System zu erstellen. Wir werden hier den Befehl mysqldump
verwenden. Dieser kann dazu verwendet werden, um Backups einer bestimmten Datenbank oder mehreren Datenbanken zu erstellen.
Backup einer Datenbank
Um ein Backup einer Datenbank zu erstellen, brauchen wir den Namen der entsprechenden Datenbank. Wir können uns alle Datenbanken anzeigen lassen, mit dem folgenden Befehl in der MySQL Shell.
SHOW DATABASES;
Im Beispiel erstellen wir ein Backup der Datenbank _erp_prod. Um dieses Backup zu erstellen, verwenden wir dann den folgenden Befehl. Bei dem Befehl müssen wir nur den Datenbank-Namen und den Namen der Backup-Datei ändern.
mysqldump -u root -p _erp_prod > backup.sql
Der Befehl wird aus der Linux-Shell abgesetzt, nicht aus der MySQL-Shell!
Wir erhalten dann die Backup-Datei in unserem aktuellen Verzeichnis und können diese dann sichern, oder auf einem anderen Server wieder einspielen.
Backup mehrerer Datenbanken in einer Datei
Um mehrere Datenbanken in einer Datei zu sichern, verwenden wir einen ähnlichen Befehl. Dabei verändern wir wieder die Namen der Datenbanken und der Backup-Datei.
mysqldump -u root -p --databases datenbank_eins datenbank_zwei > backup.sql
Die beiden Datenbanken befinden sich dann jetzt in der einen .sql Datei und können diese auch wieder woanders sichern oder einspielen.
Alle Datenbanken in einer Datei sichern
Wenn wir jetzt alle verfügbaren Datenbanken in einer Datei sichern möchten, müssen wir lediglich den folgenden Befehl verwenden. Dann wird wieder eine Backup-Datei erstellt und alle Daten der Datenbanken werden in diese Datei geschrieben.
mysqldump -u root -p --all-databases > alle_datenbanken.sql
Datenbanken in verschiedenen Dateien sichern
Jetzt zum Schluss können wir die einzelnen Datenbanken in jeweils einer eigenen Datei sichern. Dazu verwenden wir ein Bash-Skript welches wir auf unserem Server ausführen. Es werden dann einzelne Dateien angelegt, die den Inhalt der jeweiligen Datenbank haben.
for DB in $(mysql -e 'show databases' -s --skip-column-names); do
mysqldump $DB > "$DB.sql";
done
Backup einer MySQL Datenbank einspielen
Einleitung
Sobald wir ein Backup einer MySQL Datenbank erstellt haben, möchten wir diese vielleicht auch auf einen anderen Server spielen. Dies machen wir, wenn wir z.B. den Datenbankserver umziehen möchten. Dazu brauchen wir die mysqldump Datei. Diese haben wir erstellt, als wir das Backup angelegt haben.
Backup einspielen
Wir müssen zuerst, in den meisten Fällen, erstmal die Datenbank anlegen, bevor wir ein Backup für die Datenbank einspielen können. Dazu verwenden wir den CREATE DATABASE
Befehl.
CREATE DATABASE <datenbank>;
Wenn wir die Datenbank angelegt haben, können wir mit dem unten stehenden Befehl die Datenbank mit den Daten des Backups befüllen. Dazu geben wir noch den Namen der Datenbank ein, und den Pfad zur Backupdatei. Dadurch wird das Backup dann in die angegebene Datenbank eingespielt.
mysql datenbank_name < backup.sql
Datenbank aus einer großen Backupdatei wiederherstellen
Wir können auch, wenn wir eine Datenbankdatei haben, welche mehrere Datenbanken beinhaltet, nur eine Datenbank wiederherstellen. Der Befehl wird dann durch einen weiteren Parameter erweitert.
mysql --one-database datenbank_name < backup.sql
Dadurch wird nur die Datenbank mit dem entsprechenden Namen wiederhergestellt. Dabei müssen wir beachten, dass die Datenbank vorher auf dem Server angelegt sein muss.
Auto_Increment in MySQL / MariaDB zurücksetzen
Einleitung
Mit dem SQL-Befehl AUTO_INCREMENT
können wir eindeutig identifizierbare Datensätze in der Datenbank erstellen. Die ID zählt sich von alleine immer um einen hoch. Wenn wir diese ID zurücksetzen wollen, müssen wir entweder die Tabelle neu anlegen, oder wir können einen Befehl verwenden, um die ID zurückzusetzen.
Auto_Increment zurücksetzen
Wenn wir die ID zurücksetzen möchten, müssen wir lediglich nur den nachstehenden Befehl auf unserem Server abschicken. Wir müssen dabei nur den Tabellen-Namen anpassen.
ALTER TABLE tabellen_name AUTO_INCREMENT = 1;