GNU/Linux >> LINUX-Kenntnisse >  >> Debian

So installieren Sie MySQL 8 auf Debian 10

MySQL ist ein relationales Open-Source-Datenbanksystem, das auf vielen Betriebssystemen funktioniert, einschließlich Windows, Linux, macOS und FreeBSD. Es ist das wohl beliebteste OpenSource-RDBMS und zentraler Bestandteil der LAMP- und LEMP-Stacks. Viele Anwendungen wie WordPress, Joomla, TYPO3, phpBB und viele mehr sind auf MySQL angewiesen.

Mehrere neue Funktionen wurden zu MySQL 8 hinzugefügt, darunter JSON-Unterstützung, Transaktionsdatenwörterbuch, persistente Laufzeitkonfiguration, Dokumentenspeicher, Optimierungshinweise, SQL-Rollen, CTEs, Fensterfunktionen, unsichtbare Indizes und vieles mehr.

Was werden Sie lernen?

In diesem Tutorial lernen Sie einige Dinge im Zusammenhang mit dem MySQL-Server, und unten finden Sie Details zu:

  • Installieren Sie MySQL Server 8 auf Debian Buster 10
  • MySQL-Root-Passwort einrichten
  • Sichere MySQL Server-Bereitstellung (Änderung der Bindungsadresse, des Ports usw.)
  • SSL einrichten und Remote-Verbindung für MySQL-Server aktivieren
  • Installieren und konfigurieren Sie phpMyAdmin
  • Grundlegende MySQL-Abfrage zum Erstellen von Benutzern, Datenbanken usw.
  • Richten Sie automatische Sicherungen von MySQL-Datenbanken ein

Voraussetzungen

Für diese Anleitung installieren wir den MySQL Server 8.04 auf dem neuesten Debian Buster 10 mit 2 GB RAM und 4 CPUs. Außerdem benötigen wir das Root-Privileg, um Pakete zu installieren und Systemkonfigurationen zu bearbeiten.

Schritt 1 – MySQL-Repository hinzufügen

Für dieses Tutorial installieren wir MySQL Server 8 aus dem offiziellen MySQL-Repository. Dazu müssen wir das offizielle MySQL-Repository zu unserem Debian-Server hinzufügen.

Bevor Sie das MySQL-Repository hinzufügen, installieren Sie das 'GnuPG'-Paket mit dem folgenden apt-Befehl.

sudo apt install gnupg -y

Laden Sie nach Abschluss der Installation das MySQL APT-Repository herunter und fügen Sie 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 Repositories auf dem Debian-System mit dem folgenden Befehl.

sudo apt update

Und Sie erhalten das offizielle MySQL-Repository in der Liste unten.

Wie zu sehen ist, wurde das offizielle MySQL-Repository hinzugefügt, und wir sind bereit, MySQL Server 8.0 auf Debian Buster 10 zu installieren.

Schritt 2 – MySQL-Server installieren

Um 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-Standardauthentifizierungs-Plugin zu konfigurieren. Wählen Sie die 'Strong Password Encryption ' wie empfohlen und wählen Sie 'OK '.

Und die Installation von MySQL Server 8.0 ist 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.

Als Ergebnis läuft der MySQL-Dienst auf dem Debian-Server. Der Dienst wird automatisch bei jedem Systemstart ausgeführt.

Schritt 3 – Sichere MySQL-Bereitstellung mit mysql_secure_password

In diesem Schritt verbessern wir die Sicherheit der MySQL-Serverinstallation mit der 'mysql_secure_installation ' Befehlszeilentool.

Die 'mysql_secure_installation '-Tool hilft Ihnen dabei, Ihre MySQL-Bereitstellung in verschiedenen Aspekten zu verbessern, wie z. B. das Einrichten der Passwortstärke, das Deaktivieren des Fernzugriffs und das Entfernen standardmäßiger anonymer Benutzer- und Testdatenbanken.

Führen Sie nun die 'mysql_secure_installation aus ' Befehl auf Ihrer Shell.

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 Vorgang fortzufahren.

Enter the password for user root: TYPE YOUR MYSQL ROOT PASSWORD

Geben Sie danach 'Y ein ', um das 'VALIDATE PASSWORD zu konfigurieren ' Komponente.

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 Richtlinienebene für die Kennwortvalidierung für alle Benutzer aus. Geben Sie '2 ein ', um die 'STRONG ' Richtlinie auf Passwortebene.

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 überprüft der Befehl ‚mysql_secure_installation‘ Ihre aktuelle Passwortstärke. 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 sicheres Passwort ein und vergewissern Sie sich, dass Sie die Punktzahl 100 haben , und geben Sie dann '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

Als Ergebnis 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 standardmäßigen anonymen Benutzer 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 'Y ein ' erneut, um die MySQL-Remote-Anmeldung zu deaktivieren und wenn der MySQL-Server nur lokal zugänglich sein soll.

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

Entfernen Sie danach 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 'Y' ein erneut, um die Berechtigungstabellen neu zu laden. In Kraft, und neue MySQL-Konfigurationsänderungen wurden angewendet.

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

Als Ergebnis wurde die sichere Bereitstellung des MySQL-Servers mit dem Skript „mysql_secure_installation“ abgeschlossen. Und in diesem Stadium haben Sie die Komponente „VALIDATE PASSWORD“ mit der Richtlinie für starke Passwörter der Stufe „2“ aktiviert, außerdem wurde das neue starke Root-Passwort für MySQL konfiguriert.

Schritt 4 – MySQL-Server mit zusätzlicher Konfiguration sichern

Für dieses Tutorial fügen wir eine zusätzliche Konfiguration hinzu, um die Bereitstellung des MySQL-Servers zu verbessern. Wir werden die Bind-Adresse des MySQL-Servers spezifizieren, den Standard-Port ändern, das Laden der Datendatei deaktivieren und eine Kennwortablaufrichtlinie 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 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.

Starten Sie als Nächstes den MySQL-Dienst neu und überprüfen Sie offene Ports auf dem System mit dem folgenden Befehl.

systemctl restart mysql
ss -plnt

Unten sehen Sie das Ergebnis, das Sie erhalten.

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 als Nächstes mit dem benutzerdefinierten Port bei der MySQL-Shell anzumelden, können Sie den Befehl „mysql“ mit der Option „-P port“ wie unten beschrieben verwenden.

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 Portkonfiguration des MySQL-Servers zu überprüfen.

show variables like 'port';

Und Sie werden sehen, dass der MySQL-Server wie unten gezeigt auf dem benutzerdefinierten Port „8320“ läuft.

Als Ergebnis haben Sie den MySQL-Server so konfiguriert, dass er unter der lokalen IP-Adresse „127.0.0.1“ mit dem benutzerdefinierten TCP-Port „8320“ ausgeführt wird.

Schritt 5 – MySQL-Remoteverbindung mit SSL sichern und aktivieren

Angenommen, Sie möchten den MySQL-Server im internen Netzwerk bereitstellen und anderen Hosts im selben Netzwerk den Zugriff auf Datenbanken auf dem MySQL-Server ermöglichen. In diesem Fall wird empfohlen, SSL für Ihre MySQL Server-Bereitstellung zu aktivieren.

In diesem Schritt erfahren Sie, wie Sie SSL und den Fernzugriff auf dem MySQL-Server einrichten und aktivieren.

SSL-Zertifikate generieren

Standardmäßig generiert der MySQL Server 8.0 während der Installation automatisch SSL-Zertifikate. Alle Standard-SSL-Zertifikate sind im Verzeichnis „/var/lib/mysql“ verfügbar.

Für diesen Schritt generieren wir mit dem 'mysql_ssl_rsa_setup ein neues SSL-Zertifikat für den MySQL-Server ' Befehlszeilentool.

Erstellen Sie nun ein neues SSL-Verzeichnis „/etc/mysql/certs“ und ändern Sie den Besitz dieses Verzeichnisses auf den Benutzer „mysql“.

mkdir -p /etc/mysql/certs/
sudo chown -R mysql:mysql /etc/mysql/certs

Als nächstes generieren Sie mit dem folgenden Befehl neue SSL-Zertifikate für den MySQL-Server. Und stellen Sie sicher, dass Sie '--suffix=STRING ändern ' mit Ihrem Common Name.

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.

Die neuen SSL-Zertifikate für MySQL Server wurden im Verzeichnis „/etc/mysql/certs/“ generiert.

SSL und Remote Access MySQL Server aktivieren

Um SSL und den Fernzugriff auf dem 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 bearbeiten Sie die Konfiguration, die wir oben auf ‚mysqld.cnf‘ mit dem vim-Editor 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 Ihrem eigenen.

ssl-ca=/etc/mysql/certs/ca.pem
ssl-cert=/etc/mysql/certs/server-cert.pem
ssl-key=/etc/mysql/certs/server-key.pem

Darüber hinaus können Sie die TLS-Version aller Ihrer Clients angeben und sie zwingen, nur die sichere SSL-Verbindung zu verwenden, indem Sie die folgende Konfiguration verwenden.

#require_secure_transport=ON
tls_version=TLSv1.1,TLSv1.2

Speichern und schließen.

Starten Sie als Nächstes 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 internen Netzwerk-IP-Adresse mit aktiviertem SSL ausgeführt wird.

Client einrichten und SSL-Verbindung testen

Um sich von einem anderen Host/Client mit dem MySQL-Server zu verbinden, müssen Sie einen neuen MySQL-Benutzer erstellen, die Client-Zertifikate kopieren und die MySQL-Konfiguration für den Client hinzufügen.

Melden Sie sich mit dem folgenden Befehl bei der MySQL-Shell an.

mysql -u root -P 8320 -p

Erstellen Sie nun mit der folgenden Abfrage einen neuen MySQL-Benutzer für die Remote-Verbindung.

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 Zertifizierungsstelle und das Client-Zertifikat und den Schlüssel mit dem SCP-Befehl wie unten beschrieben auf den Client-Computer kopieren.

scp /etc/mysql/certs/ca.pem [email protected]:/certificates/directory/
scp /etc/mysql/certs/client-cert.pem [email protected]:/certificates/directory/
scp /etc/mysql/certs/client-key.pem [email protected]:/certificates/directory/

Verbinden Sie sich danach mit Ihrem Client-Rechner und erstellen Sie mit dem vim-Editor eine neue Konfiguration.

vim ~/.my.cnf

Fügen Sie die MySQL-Clientkonfiguration wie unten beschrieben ein und ändern Sie den Client-SSL-Zertifikatspfad 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 einem benutzerdefinierten Port mit dem Remote-MySQL-Server zu verbinden, führen Sie den 'mysql'-Befehl unten 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.

Wie Sie sehen, haben Sie sich mit einer SSL-gesicherten Verbindung TLSv1.2 beim MySQL-Server angemeldet.

Als Ergebnis wurde der Fernzugriff mit einer sicheren SSL-Verbindung für MySQL Server aktiviert.

Schritt 6 – Installieren und konfigurieren Sie phpMyAdmin

In diesem Schritt erfahren Sie, wie Sie das neueste phpMyAdmin mit dem Apache-Webserver installieren. Sie erfahren auch, wie Sie sich mit einem benutzerdefinierten Port mit dem MySQL-Server auf dem Remote-Host verbinden und sicher über SSL von phpMyAdmin trennen.

Bevor Sie fortfahren, installieren Sie einige Paketabhängigkeiten mit dem folgenden 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

Gehen Sie als Nächstes in das Verzeichnis „/var/www/html“ und laden Sie den neuesten phpMyAdmin-Quellcode herunter.

cd /var/www/html/
wget -q https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz

Extrahieren Sie nun den phpMyAdmin-Quellcode und benennen Sie ihn in das neue Verzeichnis mit dem Namen „phpMyAdmin“ um.

tar -xf phpMyAdmin-latest-all-languages.tar.gz
mv phpMyAdmin-5.0.2-all-languages phpMyAdmin

Gehen Sie als Nächstes zum Verzeichnis ‚/var/www/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 vim-Editor.

vim config.inc.php

Generieren Sie den Blowfish-Geheimcode mit diesem Link und fügen Sie den Code wie unten in die Zeile „blowfish_secret“ ein.

$cfg['blowfish_secret'] = '6}2]RFleN-JT=/vXD}L/0j0v.YALV/e3'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Geben Sie als Nächstes Ihre MySQL-Serverdetails wie unten in der Zeile „Server Configuration“ 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 von phpMyAdmin zu MySQL Server zu aktivieren. Und stellen Sie sicher, dass Sie den Pfad der Client- und CA-Zertifikate durch Ihren eigenen ä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 schließen.

Ändern Sie nun den Besitz des Verzeichnisses „phpMyAdmin“ auf den Benutzer „www-data“.

sudo chown -R www-data:www-data /var/www/html/phpMyAdmin

Und die Installation und Konfiguration von phpMyAdmin ist abgeschlossen.

Melden Sie sich jetzt beim MySQL-Server an, überprüfen Sie den MySQL-SSL-Status, erstellen Sie eine neue Datenbank und einen neuen Benutzer für phpMyAdmin.

Melden Sie sich mit dem folgenden Befehl beim 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.

Wie zu sehen ist, läuft der MySQL-Server mit aktiviertem SSL und verwendet SSL-Zertifikate, die wir generiert haben. Wir sind auch über die sichere SSL-Verbindung mit dem MySQL-Server verbunden, indem wir die Konfigurationsdatei '~/.my.cnf' verwenden.

Erstellen Sie als Nächstes eine neue Datenbank und einen neuen Benutzer namens „phpmyadmin“, indem Sie die folgende Abfrage verwenden.

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 Server-IP-Adresse mit dem Pfad „phpMyAdmin“ in die Adressleiste ein.

http://server-ip/phpMyAdmin/

Geben Sie auf der phpMyAdmin-Anmeldeseite den Benutzer „phpmyadmin“ mit dem Passwort ein, das wir oben erstellt haben, und klicken Sie auf die Schaltfläche „GO“.

Und Sie erhalten das phpMyAdmin-Dashboard wie folgt.

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 zum Verwalten von Benutzern und Datenbanken sowie den grundlegenden mysqldump-Befehl zum Datenbank-Backup kennen.

Mit MySQL-Server verbinden und Verbindungsstatus prüfen

Um eine Verbindung zum MySQL-Server herzustellen, können Sie die Befehlszeile „mysql“ verwenden. Und standardmäßig verwenden alle Verbindungen vom lokalen MySQL-Server den Unix-Socket, der durch die SSL-Verbindung nicht sicherer wird.

Stellen Sie mit dem folgenden Befehl eine Verbindung zum MySQL-Server mit der Standardkonfiguration 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 im lokalen Netzwerk mit dem benutzerdefinierten Port läuft, verwenden Sie die Optionen „h host/IP Address“ und „-P port“ weiter unten.

mysql -u root -h 172.16.0.3 -P 8320 -p

Sobald Sie sich mit Ihrem MySQL-Server verbunden 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, lernen 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 die Datenbank mit der folgenden Abfrage wechseln und auswählen.

USE hakase_db;

Als Nächstes können Sie eine neue Tabelle in Ihrer Datenbank erstellen, indem Sie die Abfrage „CREATE TABLE“ 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 table-name' verwenden, um alle Felder in Ihrer Datenbank zu überprüfen.

DESCRIBE users;

Und Sie erhalten alle Detailfelder in der Tabelle 'Benutzer'.

Als Nächstes können Sie Daten manuell in Ihre Tabelle einfügen, indem Sie die Abfrage „INSERT“ wie unten verwenden.

INSERT INTO users
       VALUES ('Mark','Mine','[email protected]','1999-03-20','Canada');

Jetzt haben Sie erfolgreich Daten in die MySQL-Datenbank eingefügt. Überprüfen Sie als Nächstes alle Daten in der Tabelle mit der 'SELECT'-Abfrage wie unten.

SELECT * FROM users;
SELECT email, birth, country FROM users;

Und Sie erhalten alle Daten aus Ihrer Tabelle.

MySQL-Benutzer erstellen

Nachdem Sie die Datenbank erstellt haben, erfahren Sie, wie Sie einen Benutzer auf dem MySQL-Server erstellen und dem Benutzer Berechtigungen für Datenbanken erteilen.

Die grundlegende MySQL-Abfrage zum Erstellen eines Benutzers erfolgt über die Abfrage „CREATE USER“. Dann können Sie Ihrem Benutzer mit dem Befehl 'GRANT', gefolgt von seinen Optionen, Berechtigungen für die Datenbank erteilen. Und zuletzt müssen Sie die Berechtigungstabellen neu laden, um die neuen Änderungen zu übernehmen.

  • Die Grundlagen

Erstellen Sie einen neuen Benutzer namens „[email protected]“ mit dem Passwort „MyHakasePasswordMySQL39==“ und gewähren Sie dem Benutzer mit der folgenden Abfrage alle Berechtigungen der „hakase_db“.

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 „[email protected]“ ist Teil des Kontonamens. Der '@localhost' erlaubt dem Benutzer nur, sich vom lokalen Server zu verbinden. Wenn nicht angegeben, ist der Standardwert '%', was Benutzern von überall erlaubt.

  • Benutzer für Fernzugriff mit spezifischem Authentifizierungs-Plug-in erstellen

Wir werden einen neuen Benutzer erstellen, der sich nur von der spezifischen Host-IP-Adresse anmelden und das bestimmte Authentifizierungs-Plug-in verwenden kann.

Wir werden einen neuen Benutzer namens „yume“ erstellen, der sich über die Client-IP „172.16.0.4“ mit dem Authentifizierungs-Plug-in „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 verbindet sich der Benutzer „yume“ nur mit dem MySQL-Server mit der IP-Adresse „172.16.0.4“. Andernfalls wird die Authentifizierung des Benutzers vom MySQL-Server verweigert.

  • Benutzer erstellen und die Verwendung einer verschlüsselten SSL-Verbindung erzwingen

Um den Benutzer zu zwingen, die sichere SSL-Verbindung zu verwenden, können Sie die Option „SSL ERFORDERLICH“ verwenden. Wenn die sichere Verbindung fehlschlägt, können Sie keine Verbindung zum MySQL-Server herstellen (die Verbindungen können nicht hergestellt werden).

Für ein sichereres Szenario können Sie die Abfrage „REQUIRE X509“ verwenden, was bedeutet, dass die Verbindung zum MySQL-Server nur hergestellt wird, wenn der Benutzer-/Client-Computer die Client- und CA-Zertifikate bereitgestellt hat.

Erstellen Sie einen neuen Benutzer namens „juice“ mit dem Hostnamen „%“. Diese Hostnamen-Option „%“ erlaubt dem Benutzer „juice“, sich von jeder IP-Adresse aus zu verbinden, aber die Verbindung wird hergestellt, wenn der Client-Rechner Client- und CA-Zertifikate bereitstellt.

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 'Juice'-Benutzer mit dem MySQL-Server verbinden, wenn der Computer Client- und CA-Zertifikate bereitgestellt hat.

Alle verfügbaren Benutzer und Grants anzeigen

Nachdem Sie alle Benutzer erstellt haben, überprüfen Sie alle Benutzer mit den folgenden Abfragen.

SELECT User, Host FROM mysql.user;
SELECT User, Host, plugin FROM mysql.user;

Jetzt erhalten Sie Details zu Benutzer, Host und den von Benutzern verwendeten Authentifizierungs-Plugins.

Überprüfen Sie als Nächstes alle Berechtigungen der Benutzer, indem Sie die Abfrage „SHOW GRANTS“ wie unten verwenden.

SHOW GRANTS FOR 'hakase'@'localhost';
SHOW GRANTS FOR 'yume'@'172.16.0.3';
SHOW GRANTS FOR 'juice'@'%';

Jetzt erhalten Sie detaillierte Berechtigungen Ihrer Benutzer.

Als Ergebnis haben Sie die primäre Verwendung von MySQL Server gelernt, einschließlich Erstellen einer Datenbank, Erstellen einer Tabelle, Einfügen von Daten in die Tabelle, Erstellen und Anzeigen von Benutzern und Anzeigen von Detailberechtigungen für jeden Benutzer.

Schritt 8 – Zusätzlich:Erstellen Sie eine inkrementelle Sicherung der MySQL-Datenbank

In diesem Schritt lernen Sie die primäre Verwendung des Befehls „mysqldump“ zum Sichern aller MySQL-Datenbanken kennen. Die 'mysqldump'-Befehlszeile ermöglicht es Ihnen, alle Datenbanken, bestimmte oder mehrere Datenbanken und Sicherungstabellen zu sichern.

Bevor Sie fortfahren, erstellen Sie das Backup-Verzeichnis und gehen Sie hinein.

mkdir -p ~/backup; cd ~/backup

Und schon können Sie mit dem Dienstprogramm „mysqldump“ ein Backup Ihrer MySQL-Datenbanken erstellen.

Alle Datenbanken sichern

Um alle Datenbanken auf dem MySQL-Server zu sichern, verwenden Sie den mysqldump-Befehl mit der Option „--add-databases“ weiter unten.

mysqldump -u root -P 8320 --all-databases -p > alldbs.sql

Jetzt erhalten Sie alle Backups Ihrer Datenbanken in die einzelne SQL-Datei mit dem Namen „alldbs.sql“.

Spezifische Datenbank sichern

Um die spezifische MySQL-Datenbank zu sichern, geben Sie Ihren Datenbanknamen in den mysqldump-Befehl unten ein.

mysqldump -u root -P 8320 -p hakase_db > backup_hakase_db.sql

Als Ergebnis erhalten Sie die SQL-Sicherungsdatei aus der Datenbank „hakase_db“ mit dem Namen „backup_hakase_db.sql“ im Sicherungsverzeichnis.

Mehrere Datenbanken sichern

Wenn Sie eine Sicherungskopie mehrerer Datenbanken erstellen möchten (nicht aller Datenbanken auf dem MySQL-Server), 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“ mit dem Namen „multi-db-once.sql“-Datei erstellt.

Automatische Sicherung der MySQL-Datenbank

Um ein automatisches Backup für MySQL einzurichten, verwenden wir das Linux-Cron. Wir werden ein neues Bash-Skript für MySQL-Datenbanken erstellen und es automatisch zu einem bestimmten Zeitpunkt mit dem Linux-Cron ausführen.

Bevor Sie fortfahren, melden Sie sich mit dem folgenden Befehl bei der MySQL-Shell an.

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“, um alle Ihre Datenbank-Backup-Dateien zu speichern.

mkdir -p /opt/backup/mysql

Gehen Sie danach in das Verzeichnis ‚/usr/local/sbin‘ und erstellen Sie eine neue Bash-Datei ‚auto_backup.sh‘ mit dem vim-Editor.

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.

Now make the 'auto_backup.sh' script executable and run the script for testing purposes.

chmod +x auto_backup.sh
./auto_backup.sh

As a result, you will get your database backup files on the '/opt/mysql/backup-current-date' directory. Ü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.

As a result, you will get compressed files of your database backup, which means the script is working.

Next, create a new cronjob that will be running the MySQL auto backup script 'auto_backup.sh' every day at the time '00:00'.

Set the default editor to 'vim' and create a new cronjob as user root using the following command.

export EDITOR=vim
crontab -u root -e

Now paste the following configuration into it.

0 0 * * * sh /usr/local/sbin/auto_backup.sh

Speichern und schließen.

The new cronjob for user root has been created. Check all cronjob list for the root user using the following command.

crontab -u root -l

And you will get details cron configuration for the user root.

As a result, you've successfully set up the automatic MySQL database backup using the bash script and Linux Cron.

Finally, you've learned how to install and secure the MySQL Database Server on the Debian Buster 10 with phpMyAdmin web-based database management. Also, you've learned the basic MySQL query for managing users, create database and tables, and using the mysqldump utility for backup databases.

Referenzen

  • https://dev.mysql.com/doc/refman/en/
  • https://docs.phpmyadmin.net/en/latest/index.html

Debian
  1. So installieren Sie Redis Server unter Debian 11

  2. So installieren Sie ProFTPD unter Debian 8

  3. So installieren Sie MySQL Server unter Debian 9

  4. So installieren Sie MySQL Server auf Debian 10 Buster

  5. So installieren Sie MySQL unter Debian 11

So installieren Sie Todoman auf einem Debian 11-Server

So installieren Sie FastPanel unter Debian 11

So installieren Sie I2P auf einem Debian-Server:

So installieren Sie MySQL 8.0 Server auf Debian 11 Bullseye

So installieren Sie VNC unter Debian 10

So installieren Sie VNC-Server unter Debian 11