MySQL gehört zu den beliebten relationalen Datenbanksystemen, die als Datenspeicher für Websites und Webanwendungen verwendet werden. Dieses Tutorial enthält alle Schritte, die zum Installieren von MySQL 8 auf Ubuntu 20.04 LTS erforderlich sind. Die Schritte sollten auf anderen Versionen von Ubuntu- und Linux-Systemen gleich sein. Sie können auch How To Install MySQL 8 on Ubuntu 18.04 LTS folgen. Sie könnten auch an anderen MySQL-spezifischen Tutorials interessiert sein, darunter How To Install MySQL 8 on Windows und Learn Basic SQL Queries Using MySQL.
Voraussetzungen
Dieses Tutorial geht davon aus, dass Sie bereits die Desktop- oder Serverversion von Ubuntu 20.04 LTS entweder für die lokale oder die Produktionsnutzung installiert haben. Sie können Ubuntu 20.04 LTS Desktop installieren, Ubuntu 20.04 LTS unter Windows mit VMware installieren und Ubuntu 20.04 LTS-Server auf Amazon EC2 hochfahren folgen, um Ubuntu 20.04 LTS zu installieren. Es wird auch davon ausgegangen, dass Sie entweder Root-Rechte oder einen normalen Benutzer mit sudo-Rechten haben.
Installieren Sie MySQL
Dieser Abschnitt enthält die Befehle, die zum Installieren von MySQL Database Server Version 8 auf Ubuntu 20.04 LTS erforderlich sind.
# Install MySQL Server 8
sudo apt install mysql-server
# Output
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libaio1 libcgi-fast-perl libcgi-pm-perl libevent-core-2.1-7 libfcgi-perl libhtml-template-perl libmecab2 mecab-ipadic
mecab-ipadic-utf8 mecab-utils mysql-client-8.0 mysql-client-core-8.0 mysql-server-8.0 mysql-server-core-8.0
---
---
Setting up mysql-server-8.0 (8.0.20-0ubuntu0.20.04.1) ...
update-alternatives: using /etc/mysql/mysql.cnf to provide /etc/mysql/my.cnf (my.cnf) in auto mode
Renaming removed key_buffer and myisam-recover options (if present)
mysqld will log errors to /var/log/mysql/error.log
mysqld is running as pid 63195
Created symlink /etc/systemd/system/multi-user.target.wants/mysql.service → /lib/systemd/system/mysql.service.
Setting up mysql-server (8.0.20-0ubuntu0.20.04.1) ...
Processing triggers for systemd (245.4-4ubuntu3) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9) ...
Ich habe die MySQL-Pakete hervorgehoben, die nach Ausführung des Installationsbefehls installiert werden. Es installiert MySQL-Core-, -Server- und -Client-Pakete. Außerdem wurde beim Schreiben dieses Tutorials die MySQL-Server-Version 8.0.20 installiert.
MySQL-Installation konfigurieren und sichern
Außerdem müssen wir die Installation mit dem Befehl mysql_secure_installation konfigurieren und sichern Wie nachfolgend dargestellt. Sie werden aufgefordert, das Root-Passwort und einige Sicherheitsfragen festzulegen.
Schritt 1 - Sichere Installation - Führen Sie den Befehl aus, um die MySQL-Konfiguration zu starten.
# Secure MySQL
sudo mysql_secure_installation
Schritt 2 - Passwort-Validierer - Es fordert zur Bestätigung der Verwendung des Passwort-Validierers auf, um das Passwort zu validieren. Bei der Eingabe des Passworts wird auch die Passwortstärke angezeigt.
# Password Validator Component
Press y|Y for Yes, any other key for No: y
Wenn wir No auswählen, wird die Passwortstärke des MySQL-Stammverzeichnisses und anderer Benutzer beim Hinzufügen nicht überprüft. Wir sollten ein starkes Passwort für die MySQL-Benutzer verwenden, daher wird empfohlen, die Passwort-Validator-Komponente zu verwenden.
Schritt 3 - Passwort-Validierungsebene - Der sichere Installationsbefehl fragt nach der Passwortvalidierungsstufe und bietet Optionen zur Auswahl zwischen Niedrig (0), Mittel (1) und Stark (2). Es wird empfohlen, mindestens Mittelstufe zu verwenden um ein sicheres Passwort für alle MySQL-Benutzer zu haben. Die Validierungsregeln aller Ebenen sind unten aufgeführt.
Niedrig - Es erwartet ein Passwort mit mindestens 8 Zeichen ohne Beschränkung der Zeichen.
Mittel - Das mittlere Level erwartet ein Passwort, das mindestens 8 Zeichen hat und Zahlen, Großbuchstaben, Kleinbuchstaben und Sonderzeichen zulässt.
Stark - Das Strong Level erwartet ein Passwort, das mindestens 8 Zeichen lang ist und Zahlen, Groß- und Kleinbuchstaben sowie Sonderzeichen zulässt. Es erlaubt auch die Wörterbuchdatei.
# Password Validation Level
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
Schritt 4 - Root-Passwort - Das Standard-Authentifizierungs-Plugin, das von MySQL für den Root-Benutzer verwendet wird, ist auth_socket .
# Password Prompt
New password:<password>
Re-enter new password:<repeat password>
Falls Sie sich für die Verwendung des Passwort-Validators entschieden haben, zeigt er auch die Passwortstärke des Root-Passworts an und bestätigt die Verwendung des angegebenen Passworts, wie unten gezeigt.
# Confirm Password
Estimated strength of the password: 80
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
Wenn wir uns für Nein entscheiden, wird erneut nach dem Passwort gefragt.
Schritt 5 - Anonyme Benutzer entfernen - Nach Eingabe des Passworts fordert der sichere Installationsprozess dazu auf, die anonymen Benutzer zu entfernen. MySQL fügt während der Installation zu Testzwecken einen anonymen Benutzer hinzu und erlaubt jedem, sich ohne Passwort anzumelden. Es wird empfohlen, den anonymen Benutzer zu entfernen.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Schritt 6 - Remote-Anmeldung nicht zulassen - Der sichere Installationsprozess fragt auch nach einer Bestätigung, ob die Remote-Anmeldung für den Root-Benutzer zulässig ist. Wir sollten Option y wählen, um den Root-Benutzer auf den localhost zu beschränken. Wir können jederzeit zusätzliche Benutzer hinzufügen, um bei Bedarf eine Remote-Anmeldung zu ermöglichen.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Schritt 7 - Testdatenbank entfernen - MySQL erstellt die Testdatenbank während der Installation. Sie können die Testdatenbank zu Analysezwecken behalten und später löschen.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
Schritt 8 - Berechtigungstabellen neu laden - Zuletzt fordert die sichere Installation Sie auf, die Berechtigungstabellen neu zu laden, um die Änderungen sofort zu übernehmen.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Die vollständigen Schritte, die ich bei einer Neuinstallation von MySQL befolgt habe, sind unten dargestellt.
# Secure MySQL
sudo mysql_secure_installation
# Configuration
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of 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
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: 1
Please set the password for root here.
New password:
Re-enter new password:
Estimated strength of the password: 50
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. 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
Success.
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
Success.
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
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
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
Success.
All done!
Die obigen Schritte entfernen die Testdatenbank und anonyme Benutzer. Es erlaubt auch keine Remote-Anmeldung, um sicherzustellen, dass der Server lokal zugänglich ist, entweder über 127.0.0.1 oder localhost .
Installation überprüfen
Wir können die Installation des MySQL-Servers mit dem unten gezeigten Befehl überprüfen, um zu prüfen, ob der MySQL-Server läuft.
# Check MySQL Status
systemctl status mysql
# Output● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-06-05 19:42:35 IST; 9min ago Main PID: 63433 (mysqld) Status: "Server is operational" Tasks: 40 (limit: 4624) Memory: 319.2M CGroup: /system.slice/mysql.service └─63433 /usr/sbin/mysqld Jun 05 19:42:35 bravo systemd[1]: Starting MySQL Community Server... Jun 05 19:42:35 bravo systemd[1]: Started MySQL Community Server.
Überprüfen Sie auch die von uns installierte Version des Servers und stellen Sie sicher, dass der Server mit dem von uns konfigurierten Root-Passwort erreichbar ist.
# Check version
sudo mysql --version
# Output
mysql Ver 8.0.20-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))
# Login
sudo mysql
# OR
sudo mysql -u root
# Quit Database
exit
Wir können uns einfach wie oben gezeigt bei MySQL anmelden, auch wenn wir das Passwort des Root-Benutzers angegeben haben, während wir den MySQL-Server sichern. MySQL lässt den Root-Benutzer direkt zu, da es den auth_socket verwendet Plugin für den Root-Benutzer, der kein Passwort benötigt.
Root-Benutzerpasswort-Plugin
Wir können das Passwort-Plugin ändern des Root-Benutzers zu caching_sha2_password (bevorzugt) oder mysql_native_password um anderen Anwendungen, einschließlich phpMyAdmin, zu erlauben, sich mit dem Root-Benutzer beim MySQL-Server anzumelden. Dies kann mit den unten gezeigten Befehlen erfolgen.
# Login to MySQL
sudo mysql
# Check password scheme of root user
SELECT user,authentication_string,plugin,host FROM mysql.user;
# Note the password plugin of root user
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$[DA
NP9|K1zAmHe`LVwrhII7zBo5b5xUoPnvOLuCa9CSJVqCn7W1rzOCCyZD | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root | | auth_socket | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
# Change to new and recommended password plugin - caching_sha2_password
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<pw>';
# Apply changes
flush privileges;
# Check password scheme of root user
SELECT user,authentication_string,plugin,host FROM mysql.user;
# Note the password plugin of root user
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | $A$005$ZtYD-ppbn>iO�"MHhl/0TXh9Qo3xYdWK3ThKPmDB6r.QhVlZY1dcT1LWH0A | caching_sha2_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
# Change password plugin of root user to mysql_native_password - not recommended
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<pw>';
# Apply changes
flush privileges;
# Check password scheme of root user
SELECT user,authentication_string,plugin,host FROM mysql.user;
# Note the password plugin of root user
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *E5C4F73D963032BEF9BB4CA799A848C08BADC343 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
# Quit Database
exit
Zusätzliche Benutzer
Wir können zusätzliche Benutzer mit dem CREATE USER-Befehl hinzufügen, wie unten gezeigt.
# Login to MySQL - auth_socket
sudo mysql
# OR - Login to MySQL - caching_sha2_password
sudo mysql -u root -p
# Add User
CREATE USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<pw>';
# Apply changes
flush privileges;
# Quit Database
exit
Sie können auch Learn Basic SQL Queries Using MySQL folgen, um grundlegende SQL-Abfragen zu lernen.
Wichtige Befehle
Dieser Abschnitt zeigt einige der wichtigen Befehle zum Starten, Stoppen und Neustarten des Servers.
# Check server status
sudo service mysql status
# Stop server
sudo service mysql stop
# Start server
sudo service mysql start
# Restart server
sudo service mysql restart
Zusammenfassung
Dieses Tutorial enthält alle erforderlichen Schritte zum Installieren der neuesten Version des MySQL-Servers, d. H. MySQL 8 auf Ubuntu 20.04 LTS. Es stellte auch die Konfigurationsschritte bereit, um die Installation des MySQL-Servers weiter zu sichern.
Nach Abschluss der Installation können Sie auch Learn Basic SQL Queries Using MySQL, Guide To Design Database For Blog Management In MySQL und Guide To Design Database For Online Shopping Cart In MySQL befolgen.