MySQL е сред популярните системи за релационни бази данни, използвани като съхранение на данни на уебсайтове и уеб приложения. Този урок предоставя всички стъпки, необходими за инсталиране на MySQL 8 на Ubuntu 20.04 LTS. Стъпките трябва да са същите в други версии на Ubuntu и Linux системи. Можете също да следвате Как да инсталирате MySQL 8 на Ubuntu 18.04 LTS. Може да се интересувате и от други специфични уроци за MySQL, включително Как да инсталирате MySQL 8 на Windows и Научете основни SQL заявки с помощта на MySQL.
Предварителни условия
Този урок предполага, че вече сте инсталирали Ubuntu 20.04 LTS настолна или сървърна версия за локално или производствено използване. Можете да следвате Инсталиране на Ubuntu 20.04 LTS Desktop, Инсталиране на Ubuntu 20.04 LTS на Windows с помощта на VMware и завъртане на Ubuntu 20.04 LTS Server на Amazon EC2, за да инсталирате Ubuntu 20.04 LTS. Предполага се също, че имате или root привилегии, или обикновен потребител с привилегии sudo.
Инсталирайте MySQL
Този раздел предоставя командите, необходими за инсталиране на MySQL Database Server версия 8 на 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) ...
Откроих MySQL пакетите, които се инсталират след изпълнение на инсталационната команда. Той инсталира MySQL ядро, сървър и клиентски пакети. Също така, версията на MySQL сървъра 8.0.20 беше инсталирана по време на писането на този урок.
Конфигуриране и защита на MySQL инсталация
Трябва също да конфигурираме и подсигурим инсталацията с помощта на командата mysql_secure_installation както е показано по-долу. Ще поиска да зададете root парола и няколко въпроса за сигурност.
Стъпка 1 - Сигурна инсталация - Изпълнете командата, за да стартирате конфигурацията на MySQL.
# Secure MySQL
sudo mysql_secure_installation
Стъпка 2 - Проверка на парола - Иска да се потвърди използването на валидатора на паролата за валидиране на паролата. Той също така ще покаже силата на паролата, докато предоставя паролата.
# Password Validator Component
Press y|Y for Yes, any other key for No: y
Ако изберем Не, няма да провери силата на паролата на MySQL root и други потребители, докато ги добавя. Трябва да използваме силна парола за потребителите на MySQL, поради което се препоръчва използването на компонента за валидиране на пароли.
Стъпка 3 - Ниво на проверка на паролата - Командата за защитена инсталация пита нивото на валидиране на паролата и предоставя опции за избор между Ниско (0), Средно (1) и Силно (2). Препоръчително е да използвате поне Средно ниво да имате силна парола за всички потребители на MySQL. Правилата за валидиране на всички нива са посочени по-долу.
Ниска - Очаква се парола с поне 8 знака без никакви ограничения за знаците.
Средно - Средното ниво очаква парола, която има поне 8 знака и позволява цифри, главни, малки и специални знаци.
Силен - Силното ниво очаква парола, която има поне 8 знака и позволява цифри, главни, малки и специални знаци. Той също така позволява файл с речник.
# Password Validation Level
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
Стъпка 4 - Root Password - Плъгинът за удостоверяване по подразбиране, използван от MySQL за root потребител, е auth_socket .
# Password Prompt
New password:<password>
Re-enter new password:<repeat password>
В случай, че сте избрали да използвате Password Validator, той също така ще покаже силата на паролата на root паролата и ще потвърди използването на дадената парола, както е показано по-долу.
# 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
Ако изберем Не, той отново ще поиска паролата.
Стъпка 5 - Премахване на анонимни потребители - След предоставяне на паролата, процесът на защитена инсталация изисква премахване на анонимните потребители. MySQL добавя анонимен потребител, докато го инсталира за тестови цели и позволява на всеки да влезе без парола. Препоръчително е да премахнете анонимния потребител.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Стъпка 6 - Забранете отдалеченото влизане - Процесът на защитена инсталация също изисква потвърждение дали е разрешено дистанционно влизане за root потребител. Трябва да изберем опция y, за да ограничим root потребителя до локалния хост. Винаги можем да добавим допълнителни потребители, за да разрешим дистанционно влизане, когато е необходимо.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Стъпка 7 - Премахване на тестова база данни - MySQL създава тестовата база данни, докато я инсталира. Можете да запазите тестовата база данни за целите на анализа и по-късно да я изпуснете.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
Стъпка 8 - Презареждане на таблици с привилегии - Най-накрая защитената инсталация иска презареждане на таблиците с привилегии, за да приложи незабавно промените.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Пълните стъпки, следвани от мен при нова инсталация на MySQL, са както е показано по-долу.
# 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!
Горните стъпки премахват тестовата база данни и анонимните потребители. Той също така забранява дистанционното влизане, за да се гарантира, че сървърът е достъпен локално чрез 127.0.0.1 или localhost .
Проверете инсталацията
Можем да проверим инсталирането на MySQL сървъра с помощта на командата, както е показано по-долу, за да проверим дали MySQL сървърът работи.
# 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.
Освен това проверете версията на инсталирания от нас сървър и се уверете, че сървърът е достъпен с помощта на конфигурираната от нас 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
Можем просто да влезем в MySQL, както е показано по-горе, дори да сме предоставили паролата на root потребителя, докато защитаваме MySQL сървъра. MySQL директно позволява на root потребител, тъй като използва auth_socket плъгин за root потребител, който не се нуждае от парола.
Приставка за root потребителска парола
Можем да променим приставката за парола на root потребител към caching_sha2_password (за предпочитане) или mysql_native_password за да позволите на другите приложения, включително phpMyAdmin, да влизат в MySQL сървъра с помощта на root потребител. Това може да се направи с помощта на командите, както е показано по-долу.
# 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
Допълнителни потребители
Можем да добавим допълнителни потребители с помощта на командата CREATE USER, както е показано по-долу.
# 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
Можете също да следвате Learn Basic SQL заявки, използвайки MySQL, за да научите основни SQL заявки.
Важни команди
Този раздел показва някои от важните команди за стартиране, спиране и рестартиране на сървъра.
# 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
Резюме
Този урок предоставя всички стъпки, необходими за инсталиране на най-новата версия на MySQL сървър, т.е. MySQL 8 на Ubuntu 20.04 LTS. Той също така предостави стъпките за конфигуриране за по-нататъшна защита на инсталацията на MySQL сървъра.
След като завършите инсталацията, можете също да следвате Learn Basic SQL заявки с помощта на MySQL, Ръководство за проектиране на база данни за управление на блогове в MySQL и Ръководство за проектиране на база данни за онлайн пазарска количка в MySQL.