MySQL jest jednym z popularnych relacyjnych systemów baz danych wykorzystywanych do przechowywania danych stron internetowych i aplikacji internetowych. Ten samouczek zawiera wszystkie kroki wymagane do zainstalowania MySQL 8 na Ubuntu 20.04 LTS. Kroki powinny być takie same w innych wersjach systemów Ubuntu i Linux. Możesz także śledzić Jak zainstalować MySQL 8 na Ubuntu 18.04 LTS. Możesz być również zainteresowany innymi samouczkami dotyczącymi MySQL, w tym Jak zainstalować MySQL 8 w systemie Windows i Naucz się podstawowych zapytań SQL przy użyciu MySQL.
Wymagania wstępne
W tym samouczku założono, że zainstalowałeś już wersję Ubuntu 20.04 LTS na komputer lub serwer do użytku lokalnego lub produkcyjnego. Aby zainstalować Ubuntu 20.04 LTS, możesz wykonać następujące czynności:Zainstaluj Ubuntu 20.04 LTS Desktop, Zainstaluj Ubuntu 20.04 LTS w systemie Windows przy użyciu VMware i Spin Up Ubuntu 20.04 LTS Server na Amazon EC2. Zakłada również, że masz uprawnienia roota lub zwykłego użytkownika z uprawnieniami sudo.
Zainstaluj MySQL
Ta sekcja zawiera polecenia wymagane do zainstalowania MySQL Database Server w wersji 8 na Ubuntu 20.04 LTS.
# 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) ...
Podkreśliłem pakiety MySQL, które są instalowane po wykonaniu polecenia instalacji. Instaluje rdzeń, serwer i pakiety klienckie MySQL. Ponadto podczas pisania tego samouczka zainstalowano serwer MySQL w wersji 8.0.20.
Konfiguruj i bezpiecz instalację MySQL
Musimy również skonfigurować i zabezpieczyć instalację za pomocą polecenia mysql_secure_installation jak pokazano niżej. Poprosi o ustawienie hasła roota i kilka pytań bezpieczeństwa.
Krok 1 - Bezpieczna instalacja - Wykonaj polecenie, aby rozpocząć konfigurację MySQL.
# Secure MySQL
sudo mysql_secure_installation
Krok 2 - Weryfikator haseł - Prosi o potwierdzenie użycia walidatora hasła w celu zweryfikowania hasła. Podczas podawania hasła pokaże również siłę hasła.
# Password Validator Component
Press y|Y for Yes, any other key for No: y
Jeśli wybierzemy Nie, nie będzie sprawdzać siły hasła roota MySQL i innych użytkowników podczas ich dodawania. Powinniśmy używać silnego hasła dla użytkowników MySQL, dlatego zaleca się używanie komponentu sprawdzania haseł.
Krok 3 - Poziom weryfikacji hasła - Polecenie bezpiecznej instalacji pyta o poziom weryfikacji hasła i udostępnia opcje do wyboru między Niski(0), Średni(1) i Silny(2). Zaleca się używanie co najmniej średniego poziomu mieć silne hasło wszystkich użytkowników MySQL. Poniżej wymieniono zasady walidacji wszystkich poziomów.
Niski - Oczekuje hasła składającego się z co najmniej 8 znaków bez żadnych ograniczeń dotyczących znaków.
Średni - Poziom średni wymaga hasła, które ma co najmniej 8 znaków i dopuszcza znaki numeryczne, wielkie i małe litery oraz znaki specjalne.
Silne - Poziom Silny wymaga hasła, które ma co najmniej 8 znaków i dopuszcza znaki numeryczne, wielkie i małe litery oraz znaki specjalne. Pozwala także na plik słownika.
# Password Validation Level
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
Krok 4 - Hasło roota - Domyślna wtyczka uwierzytelniająca używana przez MySQL dla użytkownika root to auth_socket .
# Password Prompt
New password:<password>
Re-enter new password:<repeat password>
Jeśli wybrałeś użycie Walidatora hasła, pokaże on również siłę hasła roota i potwierdzi użycie podanego hasła, jak pokazano poniżej.
# 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
Jeśli zdecydujemy się na Nie, ponownie pojawi się monit o podanie hasła.
Krok 5 - Usuń anonimowych użytkowników - Po podaniu hasła proces bezpiecznej instalacji prosi o usunięcie anonimowych użytkowników. MySQL dodaje anonimowego użytkownika podczas instalacji w celach testowych i pozwala każdemu zalogować się bez hasła. Zaleca się usunięcie anonimowego użytkownika.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Krok 6 - Nie zezwalaj na zdalne logowanie - Proces bezpiecznej instalacji prosi również o potwierdzenie, czy zdalne logowanie jest dozwolone dla użytkownika root. Powinniśmy wybrać opcję y, aby ograniczyć użytkownika root do hosta lokalnego. Zawsze możemy dodać dodatkowych użytkowników, aby umożliwić zdalne logowanie, gdy jest to wymagane.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Krok 7 - Usuń testową bazę danych - MySQL tworzy testową bazę danych podczas jej instalacji. Możesz zachować testową bazę danych do celów analizy, a później ją usunąć.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
Krok 8 - Załaduj ponownie tabele uprawnień - W końcu bezpieczna instalacja prosi o ponowne załadowanie tabel uprawnień, aby natychmiast zastosować zmiany.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Pełne kroki, które wykonałem podczas nowej instalacji MySQL, są pokazane poniżej.
# 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!
Powyższe kroki usuwają testową bazę danych i anonimowych użytkowników. Nie zezwala również na zdalne logowanie, aby upewnić się, że serwer jest dostępny lokalnie przy użyciu 127.0.0.1 lub host lokalny .
Zweryfikuj instalację
Możemy zweryfikować instalację serwera MySQL za pomocą polecenia pokazanego poniżej, aby sprawdzić, czy serwer MySQL jest uruchomiony.
# 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.
Sprawdź również wersję zainstalowanego przez nas serwera i upewnij się, że serwer jest dostępny za pomocą skonfigurowanego przez nas hasła root.
# 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
Możemy po prostu zalogować się do MySQL, jak pokazano powyżej, nawet jeśli podaliśmy hasło użytkownika root podczas zabezpieczania serwera MySQL. MySQL bezpośrednio pozwala użytkownikowi root, ponieważ używa auth_socket wtyczka dla użytkownika root, która nie wymaga hasła.
Wtyczka hasła użytkownika root
Możemy zmienić wtyczkę hasła użytkownika root na caching_sha2_password (preferowane) lub mysql_native_password aby zezwolić innym aplikacjom, w tym phpMyAdmin, na logowanie do serwera MySQL przy użyciu użytkownika root. Można to zrobić za pomocą poleceń, jak pokazano poniżej.
# 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
Dodatkowi użytkownicy
Możemy dodać dodatkowych użytkowników za pomocą polecenia CREATE USER, jak pokazano poniżej.
# 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
Możesz również śledzić Nauka podstawowych zapytań SQL przy użyciu MySQL, aby nauczyć się podstawowych zapytań SQL.
Ważne polecenia
Ta sekcja pokazuje niektóre z ważnych poleceń uruchamiania, zatrzymywania i restartowania serwera.
# 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
Podsumowanie
Ten samouczek zawierał wszystkie kroki wymagane do zainstalowania najnowszej wersji serwera MySQL, tj. MySQL 8 na Ubuntu 20.04 LTS. Zawiera również kroki konfiguracyjne w celu dalszego zabezpieczenia instalacji serwera MySQL.
Po zakończeniu instalacji możesz również postępować zgodnie z instrukcją Naucz się podstawowych zapytań SQL przy użyciu MySQL, Przewodnikiem projektowania bazy danych do zarządzania blogami w MySQL oraz Przewodnikiem projektowania bazy danych dla koszyka zakupów online w MySQL.