Wie man MySQL 8 unter Debian 10 installiert
MySQL ist ein relationales Open-Source-Datenbanksystem, das auf vielen Betriebssystemen funktioniert, darunter Windows, Linux, MacOS und FreeBSD. Es ist wahrscheinlich das populärste OpenSource-RDBMS und eine zentrale Komponente des LAMP- und LEMP-Stacks. Viele Anwendungen hängen von MySQL ab, wie WordPress, Joomla, TYPO3, phpBB und viele andere.
Mehrere neue Funktionen wurden zu MySQL 8 hinzugefügt, darunter JSON-Unterstützung, Transactional Data Dictionary, persistente Laufzeitkonfiguration, Dokumentenspeicher, Optimierungshinweise, SQL-Rollen, CTEs, Fensterfunktionen, unsichtbare Indizes und viele mehr.
Was werden Sie lernen?
In diesem Tutorial lernen Sie einige Dinge im Zusammenhang mit dem MySQL-Server, und unten finden Sie Einzelheiten dazu:
- MySQL Server 8 auf Debian Buster 10 installieren
- MySQL Root-Passwort einrichten
- Sichere MySQL-Server-Bereitstellung (Änderung von Bind-Adresse, Port usw.)
- Einrichten von SSL und Aktivieren der Remote-Verbindung für den MySQL-Server
- Installieren und Konfigurieren von phpMyAdmin
- Grundlegende MySQL-Abfrage zum Erstellen von Benutzer, Datenbank usw.
- Einrichten der automatischen Sicherung von MySQL-Datenbanken
Voraussetzungen
Wir werden den MySQL Server 8.04 auf dem neuesten Debian Buster 10 mit 2 GB RAM und 4 CPUs für diesen Leitfaden installieren. Außerdem benötigen wir das root-Privileg für die Installation von Paketen und die Bearbeitung von Systemkonfigurationen.
Schritt 1 – MySQL-Repository hinzufügen
Für dieses Tutorial werden wir den MySQL Server 8 aus dem offiziellen MySQL-Repository installieren. Um das zu tun, müssen wir das offizielle MySQL-Repository zu unserem Debian-Server hinzufügen.
Bevor Sie das MySQL-Repository hinzufügen, installieren Sie das Paket ‚GnuPG‘ mit dem unten stehenden apt-Befehl.
sudo apt install gnupg -y
Sobald die Installation abgeschlossen ist, laden Sie das MySQL APT-Repository herunter und fügen es Ihrem System hinzu.
wget -q http://repo.mysql.com/mysql-apt-config_0.8.15-1_all.deb sudo dpkg -i mysql-apt-config_0.8.15-1_all.deb
Belassen Sie das Repository als Standard und wählen Sie‚OK‚.
Und das offizielle MySQL-Repository wurde hinzugefügt.
Aktualisieren Sie als nächstes alle verfügbaren Repositorys auf dem Debian-System mit dem folgenden Befehl.
sudo apt update
Und Sie erhalten das offizielle MySQL-Repository auf der Liste unten.
Wie zu sehen ist, wurde das offizielle MySQL-Repository hinzugefÃ?gt, und wir sind bereit, den MySQL-Server 8.0 auf dem Debian Buster 10 zu installieren.
Schritt 2 – MySQL-Server installieren
Um den MySQL Server 8.0 auf dem Debian-System zu installieren, führen Sie den folgenden apt-Befehl aus.
sudo apt install mysql-server
Geben Sie nun das Root-Passwort für Ihre MySQL-Installation ein und wählen Sie‚OK‚.
Wiederholen Sie das Passwort für Ihren MySQL-Root-Benutzer.
Danach werden Sie aufgefordert, das MySQL-Standard-Authentifizierungs-Plugin zu konfigurieren. Wählen Sie die ‚Strong Password Encryption‚ wie empfohlen und wählen Sie‚OK‚.
Damit ist die Installation von MySQL Server 8.0 abgeschlossen.
Überprüfen Sie nun den MySQL-Dienst mit dem folgenden Befehl.
systemctl is-enabled mysql systemctl status mysql
Unten sehen Sie das Ergebnis, das Sie erhalten werden.
Als Ergebnis ist der MySQL-Dienst auf dem Debian-Server eingerichtet und läuft. Der Dienst wird bei jedem Systemstart automatisch ausgeführt.
Schritt 3 – Sichere MySQL-Bereitstellung mit mysql_secure_password
In diesem Schritt werden wir die Sicherheit der MySQL-Server-Installation mit dem Kommandozeilenwerkzeug ‚mysql_secure_installation‚ verbessern.
Das ‚mysql_secure_installation‚-Werkzeug wird Ihnen helfen, Ihren MySQL-Einsatz unter verschiedenen Aspekten zu verbessern, wie z.B. die Einrichtung der Passwortstärke, die Deaktivierung des Fernzugriffs und die Entfernung der standardmäßigen anonymen Benutzer- und Testdatenbanken.
Führen Sie nun den Befehl‚mysql_secure_installation‚ auf Ihrer Shell aus.
mysql_secure_installation
Zu Beginn der MySQL-Installation haben Sie bereits das Root-Passwort für MySQL konfiguriert. Geben Sie nun das Passwort ein, um mit dem Prozess fortzufahren.
Enter the password for user root: TYPE YOUR MYSQL ROOT PASSWORD
Danach geben Sie‚Y‚ ein, um die Komponente‚VALIDATE PASSWORD‚ zu konfigurieren.
VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of the password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: Y
Wählen Sie nun die Ebene der Passwort-Validierungsrichtlinie für alle Benutzer. Geben Sie‚2‚ ein, um die ‚STRONG‘-Passwortrichtlinie einzurichten.
There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters, and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2 Using existing password for root.
Jetzt wird der Befehl ‚mysql_secure_installation‘ Ihre aktuelle Passwortstärke überprüfen. Wie Sie sehen können, ist die Stärke unseres aktuellen Passworts ’50‚. Geben Sie nun‚Y‚ ein, um das aktuelle Passwort durch ein neues, stärkeres Passwort zu ersetzen.
Estimated strength of the password: 50 Change the password for root? ((Press y|Y for Yes, any other key for No) : Y
Geben Sie nun Ihr starkes Passwort ein und vergewissern Sie sich, dass es den Wert 100 hat, dann geben Sie‚Y‚ ein, um mit dem neuen Passwort fortzufahren.
New password: Re-enter new password: Estimated strength of the password: 100 Do you wish to continue with the password provided? (Press y|Y for Yes, any other key for No) : Y
Infolgedessen wurde die MySQL-Komponente ‚VALIDATE PASSWORD‘ mit einer starken Passwortrichtlinie konfiguriert und das neue MySQL-Passwort erstellt.
Als nächstes werden Sie aufgefordert, den standardmäßigen anonymen Benutzer zu entfernen. Geben Sie‚Y‚ ein, um den anonymen Standardbenutzer für Ihre Installation zu entfernen.
By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without creating a user account. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Geben Sie als nächstes wieder‚Y‚ ein, um das MySQL-Remote-Login zu deaktivieren und wenn Sie den MySQL-Server nur lokal zugänglich machen wollen.
Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Danach entfernen Sie die Standarddatenbank ‚test‘ von Ihrem MySQL-Server. Geben Sie‚Y‚ ein und drücken Sie die Eingabetaste, um fortzufahren.
By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Geben Sie als nächstes wieder ‚Y ‚ ein, um die Berechtigungstabellen neu zu laden. Damit sind die neuen MySQL-Konfigurationsänderungen wirksam geworden.
Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Infolgedessen wurde der sichere MySQL-Server-Einsatz unter Verwendung des Skripts ‚mysql_secure_installation‘ abgeschlossen. Und zu diesem Zeitpunkt haben Sie die Komponente ‚VALIDATE PASSWORD‘ mit der Richtlinie für sichere Passwörter der Stufe ‚2‘ aktiviert; außerdem wurde das neue sichere Root-Passwort für MySQL konfiguriert.
Schritt 4 – Sicherer MySQL-Server mit zusätzlicher Konfiguration
Für dieses Tutorial werden wir zusätzliche Konfiguration hinzufügen, um den Einsatz des MySQL-Servers zu verbessern. Wir werden die Bindungsadresse des MySQL-Servers angeben, den Standardport ändern, die Datei zum Laden von Daten deaktivieren und eine Richtlinie zum Ablauf des Passworts für alle MySQL-Benutzer einrichten.
Gehen Sie nun in das Verzeichnis ‚/etc/mysql/conf.d/‘ und erstellen Sie eine neue Konfiguration ‚mysqld.cnf‘ mit dem vim-Editor.
cd /etc/mysql/conf.d/ vim mysqld.cnf
Fügen Sie die folgende Konfiguration darin ein.
[mysqld] # MySQL running on 127.0.0.1 with port 8320 bind-address=127.0.0.1 port=8320 # Disable LOAD DATA LOCA local-infile=0 # Password Expiration to 60 Days default_password_lifetime=60 # MySQLX Plugin running on 127.0.0.1 with port 8321 mysqlx_bind_address=127.0.0.1 mysqlx_port=8321
Speichern und schließen.
Als nächstes starten Sie den MySQL-Dienst neu und überprüfen offene Ports auf dem System mit dem folgenden Befehl.
systemctl restart mysql ss -plnt
Unten ist das Ergebnis, das Sie erhalten werden.
Wie zu sehen ist, läuft der MySQL-Server unter der lokalen IP-Adresse ‚127.0.0.1‘ auf dem nicht standardmäßigen TCP-Port ‚8320‘.
Um sich nun mit dem benutzerdefinierten Port in die MySQL-Shell einzuloggen, können Sie den Befehl ‚mysql‘ mit der Option ‚-P port‘ wie unten beschrieben benutzen.
mysql -u root -P 8320 -p
Geben Sie das Root-Passwort für den MySQL-Server ein.
Nachdem Sie sich angemeldet haben, führen Sie die folgende Abfrage aus, um die Port-Konfiguration des MySQL-Servers zu überprüfen.
show variables like 'port';
Und Sie erhalten, dass der MySQL-Server auf dem benutzerdefinierten Port ‚8320‘ läuft (siehe unten).
Als Ergebnis haben Sie den MySQL-Server so konfiguriert, dass er auf der lokalen IP-Adresse ‚127.0.0.1‘ mit dem benutzerdefinierten TCP-Port ‚8320‘ läuft.
Schritt 5 – Sichere und aktivierte MySQL-Remote-Verbindung mit SSL
Angenommen, Sie möchten den MySQL-Server im internen Netzwerk einsetzen und anderen Hosts im selben Netzwerk den Zugriff auf Datenbanken auf dem MySQL-Server ermöglichen. In diesem Fall empfiehlt es sich, SSL für Ihren MySQL-Server-Einsatz zu aktivieren.
In diesem Schritt erfahren Sie, wie Sie SSL und den Fernzugriff auf den MySQL-Server einrichten und aktivieren.
SSL-Zertifikate erzeugen
Standardmäßig wird der MySQL Server 8.0 während der Installation automatisch SSL-Zertifikate generiert. Alle Standard-SSL-Zertifikate sind im Verzeichnis ‚/var/lib/mysql‘ verfügbar.
Für diesen Schritt generieren wir ein neues SSL-Zertifikat für den MySQL-Server mit dem Kommandozeilen-Tool‚mysql_ssl_rsa_setup‚.
Nun erzeugen wir ein neues SSL-Verzeichnis ‚/etc/mysql/certs‘ und ändern die Eigentümerschaft dieses Verzeichnisses auf den Benutzer ‚mysql‘.
mkdir -p /etc/mysql/certs/ sudo chown -R mysql:mysql /etc/mysql/certs
Als nächstes erzeugen Sie mit dem folgenden Befehl neue SSL-Zertifikate für den MySQL-Server. Und stellen Sie sicher, dass Sie das‚–suffix=STRING‚ mit Ihrem Common Name ändern.
sudo mysql_ssl_rsa_setup --suffix=HakasMySQLSrv --uid=mysql --datadir=/etc/mysql/certs/
Sobald dies abgeschlossen ist, wurden neue SSL-Zertifikate für den MySQL-Server im Verzeichnis ‚/etc/mysql/certs‘ generiert.
Überprüfen Sie Ihre SSL-Zertifikate mit dem folgenden Befehl.
ls -lah /etc/mysql/certs/ openssl verify -CAfile /etc/mysql/certs/ca.pem /etc/mysql/certs/server-cert.pem /etc/mysql/certs/client-cert.pem
Unten sehen Sie das Ergebnis, das Sie erhalten werden.
Die neuen SSL-Zertifikate für den MySQL-Server wurden im Verzeichnis ‚/etc/mysql/certs/‘ generiert.
Aktivieren Sie SSL und Fernzugriff auf MySQL Server
Um SSL und den Fernzugriff auf den MySQL-Server zu aktivieren, müssen Sie die Option ‚bind-address‘ mit der IP-Adresse Ihres internen Netzwerks ändern und die SSL-Konfiguration für MySQL hinzufügen.
Gehen Sie nun in das Verzeichnis ‚/etc/mysql/conf.d/‘ und editieren Sie die Konfiguration, die wir oben auf ‚mysqld.cnf‘ mit dem Editor vim erstellt haben.
cd /etc/mysql/conf.d/ vim mysqld.cnf
Ändern Sie die ‚bind-address‘ mit Ihrer internen IP-Adresse wie unten beschrieben.
bind-address=172.16.0.3
Fügen Sie als nächstes die SSL-Konfiguration für den MySQL-Server unten hinzu und ändern Sie den SSL-Pfad mit Ihrer eigenen.
ssl-ca=/etc/mysql/certs/ca.pem ssl-cert=/etc/mysql/certs/server-cert.pem ssl-key=/etc/mysql/certs/server-key.pem
Zusätzlich können Sie die TLS-Version aller Ihrer Clients angeben und sie mit der folgenden Konfiguration zwingen, nur die sichere SSL-Verbindung zu benutzen.
#require_secure_transport=ON tls_version=TLSv1.1,TLSv1.2
Speichern und schließen.
Starten Sie dann den MySQL-Dienst neu, um die neue Konfiguration zu übernehmen, und überprüfen Sie die IP-Adresse des MySQL-Servers mit dem folgenden Befehl.
systemctl restart mysql ss -plnt
Und Sie werden feststellen, dass der MySQL-Server auf der IP-Adresse des internen Netzwerks mit aktiviertem SSL läuft.
Client einrichten und SSL-Verbindung testen
Um sich von einem anderen Host/Client aus mit dem MySQL-Server zu verbinden, müssen Sie einen neuen MySQL-Benutzer anlegen, die Client-Zertifikate kopieren und die MySQL-Konfiguration für den Client hinzufügen.
Melden Sie sich mit dem folgenden Befehl an der MySQL-Shell an.
mysql -u root -P 8320 -p
Erstellen Sie nun einen neuen MySQL-Benutzer für die Remote-Verbindung mit der folgenden Abfrage.
CREATE USER 'remoteuser'@'%' IDENTIFIED WITH mysql_native_password BY 'MyRemoteUserPasswordMySQL39==' REQUIRE SSL; GRANT ALL PRIVILEGES ON *.* TO 'remoteuser'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
Geben Sie‚exit‚ ein, um sich von der MySQL-Shell abzumelden.
Als nächstes müssen Sie die CA und das Client-Zertifikat und den Schlüssel auf die Client-Maschine kopieren, indem Sie den SCP-Befehl wie unten beschrieben verwenden.
scp /etc/mysql/certs/ca.pem root@clientIP:/certificates/directory/ scp /etc/mysql/certs/client-cert.pem root@clientIP:/certificates/directory/ scp /etc/mysql/certs/client-key.pem root@clientIP:/certificates/directory/
Danach verbinden Sie sich mit Ihrer Client-Maschine und erstellen eine neue Konfiguration mit dem vim-Editor.
vim ~/.my.cnf
Fügen Sie die MySQL-Client-Konfiguration wie unten ein und ändern Sie den Pfad des Client-SSL-Zertifikats mit Ihrem eigenen.
[client] ssl-ca=/home/gpk/certs/ca.pem ssl-cert=/home/gpk/certs/client-cert.pem ssl-key=/home/gpk/certs/client-key.pem
Speichern und schließen.
Um sich mit dem entfernten MySQL-Server mit einem benutzerdefinierten Port zu verbinden, führen Sie den Befehl ‚mysql‘ wie unten beschrieben aus.
mysql -u remoteuser -h 172.16.0.3 -P 8320 -p
Nachdem Sie sich angemeldet haben, überprüfen Sie Ihren Verbindungsstatus mit der folgenden Abfrage.
STATUS SELECT * FROM performance_schema.session_status WHERE VARIABLE_NAME IN ('Ssl_version','Ssl_cipher');
Unten sehen Sie das Ergebnis, das Sie erhalten werden.
Wie Sie sehen können, haben Sie sich mit der SSL-gesicherten Verbindung TLSv1.2 zum MySQL-Server angemeldet.
Infolgedessen wurde der Fernzugriff mit einer sicheren SSL-Verbindung für den MySQL-Server aktiviert.
Schritt 6 – Installieren und Konfigurieren von phpMyAdmin
In diesem Schritt lernen Sie, wie Sie die neueste Version von phpMyAdmin mit dem Apache Webserver installieren. Sie werden auch lernen, wie Sie sich mit dem MySQL-Server auf dem entfernten Host mit einem benutzerdefinierten Port verbinden und sicher über SSL vom phpMyAdmin aus zugreifen können.
Bevor Sie weitergehen, installieren Sie einige Paketabhängigkeiten mit dem unten stehenden apt-Befehl.
sudo apt install apache2 libapache2-mod-php php-imagick php-phpseclib php-php-gettext php-common php-mysql php-gd php-imap php-json php-curl php-zip php-xml php-mbstring php-bz2 php-intl php-gmp unzip
Als nächstes gehen Sie in das Verzeichnis ‚/var/www/html‘ und laden Sie den aktuellen phpMyAdmin-Quellcode herunter.
cd /var/www/html/ wget -q https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
Entpacken Sie nun den phpMyAdmin-Quellcode und benennen Sie ihn in das neue Verzeichnis namens ‚phpMyAdmin‘ um.
tar -xf phpMyAdmin-latest-all-languages.tar.gz mv phpMyAdmin-5.0.2-all-languages phpMyAdmin
Gehen Sie als nächstes in das Verzeichnis ‚/var/wwww/phpMyAdmin‘ und kopieren Sie die Standardkonfigurationsdatei nach ‚config.inc.php‘.
cd /var/www/html/phpMyAdmin/ cp config.sample.inc.php config.inc.php
Bearbeiten Sie die Konfigurationsdatei ‚config.inc.php‘ mit dem Editor vim.
vim config.inc.php
Erzeugen Sie den Blowfish-Geheimcode mit diesem Link und fügen Sie den Code in die ‚blowfish_secret‘-Zeile wie unten beschrieben ein.
$cfg['blowfish_secret'] = '6}2]RFleN-JT=/vXD}L/0j0v.YALV/e3'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
Als nächstes geben Sie Ihre MySQL-Server-Details unter der Zeile ‚Server Configuration‘ wie unten beschrieben ein.
/** * Servers configuration */ $i = 0; ..... /* Custom MySQL Server Configuration */ $cfg['Servers'][$i]['host'] = '172.16.0.3'; $cfg['Servers'][$i]['port'] = '8320'; .....
Fügen Sie danach die folgende Konfiguration ein, um die SSL-Kommunikation vom phpMyAdmin zum MySQL-Server zu aktivieren. Und stellen Sie sicher, dass Sie den Pfad der Client- und CA-Zertifikate mit Ihrem eigenen Pfad ändern und sicherstellen, dass der Benutzer ‚www-data‘ auf CA- und Client-Zertifikate zugreifen kann.
/* SSL Configuration */ $cfg['Servers'][$i]['ssl'] = true; $cfg['Servers'][$i]['ssl_key'] = '/opt/mysql/certs/client-key.pem'; $cfg['Servers'][$i]['ssl_cert'] = '/opt/mysql/certs/client-cert.pem'; $cfg['Servers'][$i]['ssl_ca'] = '/opt/mysql/certs/ca.pem'; /* Disable SSL Verification for Self-signed certificates */ /* The Good: Connection between phpMyAdmin and MySQL Server are Encrypted */ /* But you're still vulnerable with the MiTM */ $cfg['Servers'][$i]['ssl_verify'] = false; /* Hide Some Databases */ $cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|sys|mysql)';
Speichern und schliessen.
Ändern Sie nun den Besitzer des Verzeichnisses ‚phpMyAdmin‘ auf den Benutzer ‚www-data‘.
sudo chown -R www-data:www-data /var/www/html/phpMyAdmin
Und die phpMyAdmin-Installation und -Konfiguration von phpMyAdmin ist abgeschlossen.
Melden Sie sich nun am MySQL-Server an, überprüfen Sie den MySQL-SSL-Status, legen Sie eine neue Datenbank und einen neuen Benutzer für phpMyAdmin an.
Melden Sie sich mit dem folgenden Befehl am MySQL-Server an.
mysql -u root -P 8329 -p
Überprüfen Sie nun den SSL-Status mit den folgenden Abfragen.
SHOW VARIABLES LIKE '%ssl%'; STATUS
Unten sehen Sie das Ergebnis, das Sie erhalten werden.
Wie Sie sehen können, läuft der MySQL-Server mit aktiviertem SSL auf ihm, und er verwendet SSL-Zertifikate, die wir generiert haben. Wir sind auch mit dem MySQL-Server über die sichere SSL-Verbindung unter Verwendung der Konfigurationsdatei ‚~/.my.cnf‘ verbunden.
Als nächstes erstellen Sie eine neue Datenbank und einen neuen Benutzer mit dem Namen ‚phpmyadmin‘ unter Verwendung der folgenden Abfrage.
CREATE DATABASE phpmyadmin; CREATE USER 'phpmyadmin'@'%' IDENTIFIED WITH mysql_native_password BY 'phpMyAdminAdmn352#$'; GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
Geben Sie‚exit‚ ein, um sich von der MySQL-Shell abzumelden.
Öffnen Sie nun Ihren Webbrowser und geben Sie die IP-Adresse des Servers mit dem Pfad von ‚phpMyAdmin‘ in die Adressleiste ein.
http://server-ip/phpMyAdmin/
Geben Sie auf der Login-Seite von phpMyAdmin den Benutzer ‚phpmyadmin‘ mit dem Passwort ein, das wir oben erstellt haben, und klicken Sie auf die Schaltfläche ‚GO‘.
Sie erhalten dann das phpMyAdmin Dashboard wie unten dargestellt.
Damit ist die Installation und Konfiguration von phpMyAdmin abgeschlossen.
Schritt 7 – MySQL Benutzer und Datenbank erstellen
In diesem Schritt lernen Sie die primäre Verwendung von MySQL-Abfragen zur Verwaltung von Benutzer, Datenbank und den grundlegenden mysqldump-Befehl für die Datenbanksicherung kennen.
Verbindung zum MySQL-Server herstellen und Verbindungsstatus prüfen
Um sich mit dem MySQL-Server zu verbinden, können Sie die ‚mysql‘-Befehlszeile benutzen. Und in der Voreinstellung benutzen alle Verbindungen vom lokalen MySQL-Server den Unix-Socket, was die SSL-Verbindung nicht sicherer macht.
Stellen Sie die Verbindung zum MySQL-Server mit der Standardkonfiguration mit dem folgenden Befehl her.
mysql -u username -p
Wenn Ihr MySQL-Server auf dem benutzerdefinierten Port läuft, verwenden Sie die Option ‚-P port‘ weiter unten.
mysql -u root -P 8320 -p
Wenn Ihr MySQL-Server auf dem lokalen Netzwerk mit dem benutzerdefinierten Port läuft, verwenden Sie die Optionen ‚h host/IP-Adresse‘ und ‚-P port‘ weiter unten.
mysql -u root -h 172.16.0.3 -P 8320 -p
Sobald Sie eine Verbindung zu Ihrem MySQL-Server hergestellt haben, führen Sie die folgende Abfrage aus, um den Verbindungsstatus zu überprüfen.
STATUS
Und Sie erhalten das folgende Ergebnis.
Und Sie sind erfolgreich mit dem MySQL-Server verbunden.
Datenbank erstellen und anzeigen
Nachdem Sie sich mit der MySQL-Shell verbunden haben, erfahren Sie, wie Sie die MySQL-Datenbank erstellen, die Datenbank auswählen, Tabellen erstellen und Daten einfügen.
Um eine neue MySQL-Datenbank zu erstellen, verwenden Sie die folgende Abfrage.
CREATE DATABASE hakase_db; CREATE DATABASE yume_db; CREATE DATABASE juice_db;
Überprüfen Sie nun alle Listendatenbanken auf Ihrem MySQL-Server mit der folgenden Abfrage.
SHOW DATABASES; SHOW DATABASES LIKE "%db%";
Als nächstes können Sie mit der folgenden Abfrage die Datenbank wechseln und auswählen.
USE hakase_db;
Als nächstes können Sie eine neue Tabelle auf Ihrer Datenbank erstellen, indem Sie die ‚CREATE TABLE‘-Abfrage wie unten beschrieben verwenden.
CREATE TABLE users (first VARCHAR(20), last VARCHAR(20), email VARCHAR(20), birth DATE, country VARCHAR(20));
Jetzt können Sie ‚DESCRIBE Tabellenname‘ verwenden, um alle Felder in Ihrer Datenbank zu überprüfen.
DESCRIBE users;
Und Sie erhalten alle Detailfelder in der Tabelle ‚users‘.
Als nächstes können Sie Daten manuell in Ihre Tabelle einfügen, indem Sie die ‚INSERT‘-Abfrage wie unten beschrieben verwenden.
INSERT INTO users VALUES ('Mark','Mine','mmine@gmail.com','1999-03-20','Canada');
Jetzt haben Sie erfolgreich Daten in die MySQL-Datenbank eingefügt. Als nächstes überprüfen Sie alle Daten in der Tabelle mit Hilfe der ‚SELECT‘-Abfrage wie unten beschrieben.
SELECT * FROM users; SELECT email, birth, country FROM users;
Sie erhalten dann alle Daten aus Ihrer Tabelle.
MySQL-Benutzer anlegen
Nachdem Sie die Datenbank erstellt haben, erfahren Sie, wie Sie einen Benutzer auf dem MySQL-Server anlegen und dem Benutzer Privilegien für Datenbanken erteilen.
Die grundlegende MySQL-Abfrage zum Anlegen eines Benutzers erfolgt mit Hilfe der ‚CREATE USER‘-Abfrage. Dann können Sie Ihrem Benutzer Privilegien für die Datenbank gewähren, indem Sie den Befehl ‚GRANT‘ verwenden, der seinen Optionen folgt. Und zuletzt müssen Sie die Berechtigungstabellen neu laden, um die neuen Änderungen anzuwenden.
- Die Basis
Erstellen Sie einen neuen Benutzer namens ‚hakase@localhost‘ mit dem Passwort ‚MyHakasePasswordMySQL39==‘ und erlauben Sie dem Benutzer alle Privilegien der ‚hakase_db‘ unter Verwendung der folgenden Abfrage.
CREATE USER 'hakase'@'localhost' IDENTIFIED BY 'MyHakasePasswordMySQL39=='; GRANT ALL PRIVILEGES ON hakase_db.* TO 'hakase'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;
Zusätzliche Informationen, der Hostname ‚user@localhost‘ ist ein Teil des Kontonamens. Der ‚@localhost‘ erlaubt dem Benutzer nur die Verbindung vom lokalen Server aus. Wenn er nicht angegeben wird, ist der Standardwert ‚%‘, was Benutzern von überall her erlaubt.
- Benutzer für Fernzugriff mit spezifischem Authentifizierungs-Plugin erstellen
Wir werden einen neuen Benutzer anlegen, der sich nur von der spezifischen Host-IP-Adresse aus einloggen und das spezielle Authentifizierungs-Plugin verwenden kann.
Wir werden einen neuen Benutzer namens ‚yume‘ anlegen, der sich über die Client-IP ‚172.16.0.4‘ mit dem Authentifizierungs-Plugin ‚mysql_native_password‘ verbindet, und der Benutzer darf nur auf die Datenbank ‚yume_db‘ zugreifen.
CREATE USER 'yume'@'172.16.0.4' IDENTIFIED WITH mysql_native_password BY 'MyYumePasswordMySQL39=='; GRANT ALL PRIVILEGES ON yume_db.* TO 'yume'@'172.16.0.4' WITH GRANT OPTION; FLUSH PRIVILEGES;
Infolgedessen wird sich der Benutzer ‚yume‘ nur mit der IP-Adresse ‚172.16.0.4‘ mit dem MySQL-Server verbinden. Andernfalls wird die Authentifizierung des Benutzers durch den MySQL-Server verweigert.
- Benutzer anlegen und zur Verwendung einer verschlüsselten SSL-Verbindung zwingen
Um den Benutzer zur Verwendung der sicheren SSL-Verbindung zu zwingen, können Sie die Option ‚REQUIRE SSL‘ verwenden. Wenn die sichere Verbindung fehlschlägt, können Sie sich nicht mit dem MySQL-Server verbinden (kann die Verbindungen nicht herstellen).
Für ein sichereres Szenario können Sie die ‚REQUIRE X509‘-Abfrage verwenden, was bedeutet, dass die Verbindung zum MySQL-Server nur dann hergestellt wird, wenn der Benutzer/Client-Rechner die Client- und CA-Zertifikate zur Verfügung gestellt hat.
Erstellen Sie einen neuen Benutzer namens ‚juice‘ mit dem Hostnamen ‚%‘. Diese Hostnamen-Option ‚%‘ erlaubt es dem Benutzer ‚juice‘, sich von einer beliebigen IP-Adresse aus zu verbinden, aber die Verbindung wird erst dann hergestellt, wenn der Client-Computer Client- und CA-Zertifikate zur Verfügung gestellt hat.
CREATE USER 'juice'@'%' IDENTIFIED WITH mysql_native_password BY 'MyJuicePasswordMySQL39==' REQUIRE X509; GRANT ALL PRIVILEGES ON juice_db.* TO 'juice'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
Infolgedessen kann sich der Benutzer ‚juice‘ mit dem MySQL-Server verbinden, wenn der Rechner Client- und CA-Zertifikate zur Verfügung gestellt hat.
Alle verfügbaren Benutzer und Berechtigungen anzeigen
Nachdem Sie alle Benutzer erstellt haben, überprüfen Sie alle Benutzer mithilfe der folgenden Abfragen.
SELECT User, Host FROM mysql.user; SELECT User, Host, plugin FROM mysql.user;
Nun erhalten Sie Details zu Benutzer, Host und den Authentifizierungs-Plugins, die von den Benutzern verwendet werden.
Als nächstes überprüfen Sie alle Privilegien der Benutzer mit der ‚SHOW GRANTS‘-Abfrage wie unten beschrieben.
SHOW GRANTS FOR 'hakase'@'localhost'; SHOW GRANTS FOR 'yume'@'172.16.0.3'; SHOW GRANTS FOR 'juice'@'%';
Nun erhalten Sie die detaillierten Privilegien Ihrer Benutzer.
Infolgedessen haben Sie die primäre Verwendung von MySQL Server kennengelernt, einschließlich der Erstellung einer Datenbank, der Erstellung einer Tabelle, des Einfügens von Daten in die Tabelle, der Erstellung und Anzeige von Benutzern und der Anzeige der Detailberechtigungen jedes Benutzers.
Schritt 8 – Zusätzlich: Erstellen einer inkrementellen Sicherung der MySQL-Datenbank
In diesem Schritt lernen Sie die primäre Verwendung des ‚mysqldump‘-Befehls zur Sicherung aller MySQL-Datenbanken kennen. Die ‚mysqldump‘-Befehlszeile ermöglicht es Ihnen, alle Datenbanken, bestimmte oder mehrere Datenbanken und Backup-Tabellen zu sichern.
Bevor Sie weitergehen, erstellen Sie das Backup-Verzeichnis und gehen Sie hinein.
mkdir -p ~/backup; cd ~/backup
Und schon können Sie ein Backup der MySQL-Datenbanken mit dem Dienstprogramm ‚mysqldump‘ erstellen.
Alle Datenbanken sichern
Um alle Datenbanken auf dem MySQL-Server zu sichern, verwenden Sie den Befehl mysqldump mit der Option ‚–add-d-databases‘ weiter unten.
mysqldump -u root -P 8320 --all-databases -p > alldbs.sql
Nun erhalten Sie alle Backups Ihrer Datenbanken in die einzelne SQL-Datei namens ‚alldbs.sql‘.
Spezifische Datenbank sichern
Um die spezifische MySQL-Datenbank zu sichern, geben Sie Ihren Datenbanknamen im mysqldump-Befehl unten an.
mysqldump -u root -P 8320 -p hakase_db > backup_hakase_db.sql
Als Ergebnis erhalten Sie die SQL-Sicherungsdatei von der Datenbank ‚hakase_db‘ mit dem Namen ‚backup_hakase_db.sql‘ im Sicherungsverzeichnis.
Mehrere Datenbanken sichern
Wenn Sie ein Backup von mehreren Datenbanken (nicht allen Datenbanken auf dem MySQL-Server) erstellen möchten, verwenden Sie die Option ‚–databases‘ weiter unten.
mysqldump -u root -P 8320 -p --databases yume_db juice_db > multi-db-once.sql
Als Ergebnis wurde die Sicherungsdatei für Ihre beiden Datenbanken ‚yume_db‘ und ‚juice_db‘ erstellt, die als ‚multi-db-once.sql‘-Datei bezeichnet wird.
Automatische Sicherung der MySQL-Datenbank
Um ein automatisches Backup für MySQL einzurichten, werden wir den Linux-‚Cron‘ verwenden. Wir werden ein neues Bash-Skript für MySQL-Datenbanken erstellen und es automatisch zu einer bestimmten Zeit mit Cron ausführen.
Bevor Sie weitermachen, loggen Sie sich mit dem folgenden Befehl in die MySQL-Shell ein.
mysql -u root -P 8320 -p
Erstellen Sie mit der folgenden Abfrage einen neuen Backup-Benutzer mit einigen Privilegien.
CREATE USER 'backup'@'localhost' IDENTIFIED WITH mysql_native_password BY 'MyBackupPasswordMySQL39=='; GRANT PROCESS, SELECT, LOCK TABLES, SHOW VIEW, EVENT ON *.* TO 'backup'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;
Geben Sie nun ‚exit‘ ein, um sich von der MySQL-Shell abzumelden.
Erstellen Sie als nächstes ein neues Backup-Verzeichnis ‚/opt/backup/mysql‘ zur Speicherung aller Ihrer Datenbank-Backup-Dateien.
mkdir -p /opt/backup/mysql
Danach gehen Sie in das Verzeichnis ‚/usr/local/sbin‘ und erzeugen eine neue Bash-Datei ‚auto_backup.sh‘ mit Hilfe des Vim-Editors.
cd /usr/local/sbin/ vim auto_backup.sh
Ändern Sie die Details Benutzer, Passwort und Port mit Ihren eigenen und fügen Sie die Konfiguration darin ein.
#!/bin/bash # Basic configuration: datestamp e.g., YYYYMMDD DATE=$(date +"%Y%m%d") # Location of your backups (create the directory first!) BACKUP_DIR="/opt/backup/mysql" # MySQL login details MYSQL_USER="backup" MYSQL_PASSWORD="MyBackupPasswordMySQL39==" # MySQL executable locations (no need to change this) MYSQL=/usr/bin/mysql MYSQLDUMP=/usr/bin/mysqldump # MySQL databases you wish to skip SKIPDATABASES="Database|information_schema|performance_schema|mysql" # Number of days to keep the directories (older than X days will be removed) RETENTION=14 # ---- DO NOT CHANGE BELOW THIS LINE ------------------------------------------ # # Create a new directory into the backup directory location for this date mkdir -p $BACKUP_DIR/$DATE # Retrieve a list of all databases databases=`$MYSQL -u$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "($SKIPDATABASES)"` # Dumb the databases in seperate names and gzip the .sql file for db in $databases; do echo $db $MYSQLDUMP --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --skip-lock-tables --events --databases $db | gzip > "$BACKUP_DIR/$DATE/$db.sql.gz" done # Remove files older than X days find $BACKUP_DIR/* -mtime +$RETENTION -delete
Speichern und schließen.
Machen Sie jetzt das Skript ‚auto_backup.sh‘ ausführbar und lassen Sie das Skript zu Testzwecken laufen.
chmod +x auto_backup.sh ./auto_backup.sh
Als Ergebnis erhalten Sie Ihre Datenbank-Backup-Dateien im Verzeichnis ‚/opt/mysql/backup-current-date‘. Überprüfen Sie dies mit dem folgenden Befehl.
ls -lah /opt/backup/mysql/ ls -lah /opt/backup/mysql/datedir/
Unten sehen Sie das Ergebnis, das Sie erhalten werden.
Als Ergebnis erhalten Sie komprimierte Dateien Ihrer Datenbanksicherung, was bedeutet, dass das Skript funktioniert.
Als nächstes erstellen Sie einen neuen Cronjob, der das MySQL-Auto-Backup-Skript ‚auto_backup.sh‘ jeden Tag um die Zeit ’00:00′ ausführt.
Setzen Sie den Standard-Editor auf ‚vim‘ und erstellen Sie einen neuen Cronjob als Benutzer root mit dem folgenden Befehl.
export EDITOR=vim crontab -u root -e
Fügen Sie nun die folgende Konfiguration darin ein.
0 0 * * * sh /usr/local/sbin/auto_backup.sh
Speichern und schließen.
Der neue Cronjob für den Benutzer root wurde erstellt. Überprüfen Sie alle Cronjob-Listen für den Benutzer root mit folgendem Befehl.
crontab -u root -l
Und Sie erhalten Details zur Cron-Konfiguration für den Benutzer root.
Als Ergebnis haben Sie die automatische MySQL-Datenbanksicherung mit dem bash-Skript und Linux Cron erfolgreich eingerichtet.
Schließlich haben Sie gelernt, wie man den MySQL-Datenbankserver auf dem Debian Buster 10 mit der webbasierten Datenbankverwaltung phpMyAdmin installiert und sichert. Außerdem haben Sie die grundlegenden MySQL-Abfragen fÃ?r die Verwaltung von Benutzern, die Erstellung von Datenbanken und Tabellen und die Verwendung des Dienstprogramms mysqldump fÃ?r Backup-Datenbanken gelernt.