MySQL is een van de populaire relationele databasesystemen die worden gebruikt als gegevensopslag van websites en webapplicaties. Deze tutorial biedt alle stappen die nodig zijn om MySQL 8 op Ubuntu 20.04 LTS te installeren. De stappen moeten hetzelfde zijn op andere versies van Ubuntu- en Linux-systemen. Je kunt ook How To Install MySQL 8 op Ubuntu 18.04 LTS volgen. Mogelijk bent u ook geïnteresseerd in andere MySQL-specifieke tutorials, waaronder MySQL 8 installeren op Windows en basis-SQL-query's leren met MySQL.
Vereisten
Deze tutorial gaat ervan uit dat je de Ubuntu 20.04 LTS desktop- of serverversie al hebt geïnstalleerd voor lokaal of productiegebruik. U kunt Ubuntu 20.04 LTS Desktop installeren, Ubuntu 20.04 LTS op Windows installeren met VMware en Ubuntu 20.04 LTS Server op Amazon EC2 starten om Ubuntu 20.04 LTS te installeren volgen. Het gaat er ook van uit dat je ofwel root-rechten hebt of een gewone gebruiker met sudo-rechten.
Installeer MySQL
Dit gedeelte bevat de opdrachten die nodig zijn om MySQL Database Server versie 8 op Ubuntu 20.04 LTS te installeren.
# 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) ...
Ik heb de MySQL-pakketten gemarkeerd die worden geïnstalleerd na het uitvoeren van de installatieopdracht. Het installeert MySQL-kern-, server- en clientpakketten. Ook werd de MySQL-serverversie 8.0.20 geïnstalleerd tijdens het schrijven van deze tutorial.
MySQL-installatie configureren en beveiligen
We moeten de installatie ook configureren en beveiligen met het commando mysql_secure_installation zoals hieronder weergegeven. Het zal vragen om het root-wachtwoord in te stellen en een paar beveiligingsvragen.
Stap 1 - Beveiligde installatie - Voer de opdracht uit om de MySQL-configuratie te starten.
# Secure MySQL
sudo mysql_secure_installation
Stap 2 - Wachtwoordvalidator - Het vraagt om het gebruik van de wachtwoordvalidator te bevestigen om het wachtwoord te valideren. Het zal ook de wachtwoordsterkte tonen terwijl het wachtwoord wordt verstrekt.
# Password Validator Component
Press y|Y for Yes, any other key for No: y
Als we Nee selecteren, wordt de wachtwoordsterkte van de MySQL-root en andere gebruikers niet gecontroleerd terwijl ze worden toegevoegd. We zouden een sterk wachtwoord moeten gebruiken voor de MySQL-gebruikers, daarom wordt het aanbevolen om de Password Validator Component te gebruiken.
Stap 3 - Wachtwoordvalidatieniveau - De opdracht beveiligde installatie vraagt om het wachtwoordvalidatieniveau en biedt opties om te kiezen tussen Laag (0), Gemiddeld (1) en Sterk (2). Het wordt aanbevolen om ten minste Medium Level . te gebruiken om een sterk wachtwoord te hebben van alle MySQL-gebruikers. De validatieregels van alle niveaus zijn zoals hieronder vermeld.
Laag - Het verwacht een wachtwoord van minimaal 8 tekens zonder enige beperking op de tekens.
Gemiddeld - Het gemiddelde niveau verwacht een wachtwoord van minimaal 8 tekens en staat numerieke, hoofdletters, kleine letters en speciale tekens toe.
Sterk - Het Strong Level verwacht een wachtwoord van minimaal 8 tekens en staat numerieke, hoofdletters, kleine letters en speciale tekens toe. Het staat ook het woordenboekbestand toe.
# Password Validation Level
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
Stap 4 - Rootwachtwoord - De standaard authenticatie-plug-in die door MySQL voor de rootgebruiker wordt gebruikt, is auth_socket .
# Password Prompt
New password:<password>
Re-enter new password:<repeat password>
Als je ervoor hebt gekozen om Password Validator te gebruiken, zal het ook de wachtwoordsterkte van het root-wachtwoord tonen en bevestigen om het gegeven wachtwoord te gebruiken, zoals hieronder weergegeven.
# 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
Als we voor Nee kiezen, wordt opnieuw om het wachtwoord gevraagd.
Stap 5 - Verwijder anonieme gebruikers - Na het invoeren van het wachtwoord vraagt het beveiligde installatieproces om de anonieme gebruikers te verwijderen. MySQL voegt een anonieme gebruiker toe tijdens de installatie voor testdoeleinden en stelt iedereen in staat in te loggen zonder wachtwoord. Het wordt aanbevolen om de anonieme gebruiker te verwijderen.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Stap 6 - Aanmelding op afstand niet toestaan - Het beveiligde installatieproces vraagt ook om te bevestigen of inloggen op afstand is toegestaan voor de rootgebruiker. We moeten optie y kiezen om de rootgebruiker te beperken tot de localhost. We kunnen altijd extra gebruikers toevoegen om inloggen op afstand mogelijk te maken wanneer dat nodig is.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Stap 7 - Testdatabase verwijderen - MySQL maakt de testdatabase aan tijdens de installatie. U kunt de testdatabase voor analysedoeleinden bewaren en later verwijderen.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
Stap 8 - Privilege-tabellen opnieuw laden - Ten slotte vraagt de beveiligde installatie om de privilegetabellen opnieuw te laden om de wijzigingen onmiddellijk toe te passen.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
De volledige stappen die ik heb gevolgd bij een nieuwe installatie van MySQL zijn zoals hieronder weergegeven.
# 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!
De bovenstaande stappen verwijderen de testdatabase en anonieme gebruikers. Het verbiedt ook inloggen op afstand om ervoor te zorgen dat de server lokaal toegankelijk is, hetzij met behulp van 127.0.0.1 of lokale host .
Installatie verifiëren
We kunnen de installatie van de MySQL-server verifiëren met behulp van de onderstaande opdracht om te controleren of de MySQL-server actief is.
# 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.
Controleer ook de versie van de server die door ons is geïnstalleerd en zorg ervoor dat de server toegankelijk is met het door ons geconfigureerde root-wachtwoord.
# 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
We kunnen eenvoudig inloggen op de MySQL zoals hierboven weergegeven, zelfs als we het wachtwoord van de rootgebruiker hebben verstrekt terwijl we de MySQL-server beveiligen. MySQL staat de root-gebruiker rechtstreeks toe omdat het de auth_socket . gebruikt plug-in voor de rootgebruiker die geen wachtwoord nodig heeft.
Invoegtoepassing rootgebruiker
We kunnen de wachtwoord-plug-in wijzigen van de rootgebruiker naar caching_sha2_password (voorkeur) of mysql_native_password om de andere applicaties, inclusief phpMyAdmin, toe te staan om in te loggen op de MySQL-server met behulp van de rootgebruiker. Het kan worden gedaan met behulp van de onderstaande commando's.
# 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
Extra gebruikers
We kunnen extra gebruikers toevoegen met de opdracht CREATE USER, zoals hieronder weergegeven.
# 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
U kunt ook Basis SQL-query's leren met MySQL volgen om basis SQL-query's te leren.
Belangrijke opdrachten
Deze sectie toont enkele van de belangrijke commando's voor het starten, stoppen en herstarten van de server.
# 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
Samenvatting
Deze tutorial bevatte alle stappen die nodig zijn om de meest recente versie van de MySQL-server, d.w.z. MySQL 8, op Ubuntu 20.04 LTS te installeren. Het bood ook de configuratiestappen om de MySQL-serverinstallatie verder te beveiligen.
Na het voltooien van de installatie kunt u ook de basis SQL-query's leren met MySQL, de handleiding voor het ontwerpen van een database voor blogbeheer in MySQL en de handleiding voor het ontwerpen van een database voor het online winkelwagentje in MySQL volgen.