img-bg
Как установить MySQL на Ubuntu 20.04
VPS/VDS

MySQL - это система управления базами данных с открытым исходным кодом, обычно устанавливаемая как часть популярного стека LAMP (Linux, Apache, MySQL, PHP/Python/Perl). Он реализует реляционную модель и использует язык структурированных запросов (более известный как SQL) для управления своими данными.

Шаг 1 - Установка MySQL

В Ubuntu 20.04 вы можете установить MySQL с помощью репозитория пакетов APT.
Чтобы установить его, обновите локальные пакеты и выполните установку:
sudo apt update
sudo apt install mysql-server
Эта команда установит MySQL, но не предложит вам установить пароль или внести какие-либо другие изменения конфигурации. Поскольку это делает вашу установку MySQL небезопасной, мы рассмотрим это далее.

Шаг 2 - Настройка MySQL

Первым делом на свежей установке СУБД следует запустить встроенный скрипт безопасности. Он изменит некоторые стандартные параметры, заблокирует удалённый root-логин и удалит образцы.

Для новых установок MySQL вам потребуется запустить включенный в СУБД сценарий безопасности. Этот сценарий изменяет некоторые  параметры по умолчанию.

Запустите скрипт с sudo безопасности:
sudo mysql_secure_installation
Это проведет вас через ряд подсказок, где вы можете внести изменения в параметры безопасности вашего MySQL. В первом предложении будет задан вопрос, хотите ли вы настроить плагин Validate Password, который можно использовать для проверки надежности паролей новых пользователей MySQL, прежде чем считать их действительными.

Если вы решите настроить плагин Validate Password, любой пользователь MySQL, которого вы создадите, который аутентифицируется с помощью пароля, должен будет иметь пароль, удовлетворяющий выбранной вами политике. Самый сильный уровень политики — который вы можете выбрать, введя "2" - потребует, чтобы пароли были длиной не менее восьми символов и включали сочетание прописных, строчных, числовых и специальных символов:
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:
2
Независимо от того, решите ли вы настроить плагин Validate Password, следующим запросом будет установка пароля для пользователя MySQL root. Введите и затем подтвердите безопасный пароль по вашему выбору:
Please set the password for root here.


New password: 

Re-enter new password: 
Обратите внимание, что даже если вы установили пароль для root пользователя MySQL, этот пользователь в настоящее время не настроен для аутентификации с помощью пароля при подключении к оболочке MySQL.

Если вы использовали плагин Validate Password, вы получите обратную связь о силе вашего нового пароля. Затем скрипт спросит, хотите ли вы продолжить работу с только что введенным паролем или хотите ввести новый. Предполагая, что вы удовлетворены силой только что введенного пароля, введите Y, чтобы продолжить сценарий:
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
В остальных случаях можетенажать Y, а затем ENTER, чтобы принять значения по умолчанию для всех последующих вопросов. Это приведет к удалению некоторых анонимных пользователей и тестовой базы данных, отключению удаленной авторизации к root и загрузке этих новых правил, чтобы MySQL немедленно подтвердил внесенные вами изменения.

Как только сценарий завершится, ваша установка MySQL будет защищена. Теперь вы можете перейти к созданию выделенного пользователя базы данных с помощью клиента MySQL.

Шаг 3 - Настройка аутентификации и привилегий (опционально)

После установки MySQL создает учетную запись пользователя root, которую вы можете использовать для управления своей базой данных. Этот пользователь имеет полные привилегии над сервером MySQL, то есть он имеет полный контроль над каждой базой данных, таблицей, пользователем и так далее. Из-за этого лучше избегать использования этой учетной записи вне административных функций. Этот шаг описывает, как использовать root пользователя MySQL для создания новой учетной записи пользователя и предоставления ему привилегий.

В системах Ubuntu, работающих под управлением MySQL 5.7 (и более поздних версий), корневой пользователь MySQL по умолчанию аутентифицируется с помощью плагина auth_socket, а не с помощью пароля. Этот плагин требует, чтобы имя пользователя операционной системы, вызывающего клиент MySQL, совпадало с именем пользователя MySQL, указанным в команде, поэтому вы должны вызвать mysql с привилегиями sudo, чтобы получить доступ к корневому пользователю MySQL:
sudo mysql
Как только у вас есть доступ к терминалу MySQL, вы можете создать нового пользователя с помощью инструкции CREATE USER:
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
Затем предоставьте новому пользователю соответствующие привилегии. Например, с помощью этой команды вы можете предоставить ему привилегии на все таблицы в базе данных, а также право добавлять, изменять и удалять привилегии других пользователей:
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;
Обратите внимание, на этом этапе вам не нужно снова запускать команду FLUSH PRIVILEGES. Она необходима только при изменении таблиц привилегий с помощью операторов INSERT, UPDATE или DELETE. Поскольку вы создали нового пользователя, а не меняли уже существующего, FLUSH PRIVILEGES здесь не нужна.
После этого выйдите из оболочки MySQL:
exit
А сейчас давайте проверим установку MySQL.

Шаг 4 - Тестирование MySQL

Независимо от того, как вы его установили, MySQL должен был начать работать автоматически. Чтобы проверить это, проверьте его состояние.
systemctl status mysql.service
Вы увидите результат, похожий на следующий:
● mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2020-04-21 12:56:48 UTC; 6min ago
   Main PID: 10382 (mysqld)
     Status: "Server is operational"
      Tasks: 39 (limit: 1137)
     Memory: 370.0M
     CGroup: /system.slice/mysql.service
             └─10382 /usr/sbin/mysqld
Если MySQL не работает, вы можете запустить его с помощью:
sudo systemctl start mysql
Еще можно проверить работу вашей СУБД, подключившись к MySQL с помощью инструмента mysqladmin. Это клиент, предназначенный для запуска команд администрирования.
Чтобы подключиться к MySQL как root (-u root), ввести пароль (-p) и запросить версию, используйте такую команду:
sudo mysqladmin -p -u root version
Эта команда вернет:
mysqladmin  Ver 8.0.19-0ubuntu5 for Linux on x86_64 ((Ubuntu))
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Server version      8.0.19-0ubuntu5
Protocol version    10
Connection      Localhost via UNIX socket
UNIX socket     /var/run/mysqld/mysqld.sock
Uptime:         10 min 44 sec

Threads: 2  Questions: 25  Slow queries: 0  Opens: 149  Flush tables: 3  Open tables: 69  Queries per second avg: 0.038
Такой вывод значит, что MySQL работает.

Заключение

Теперь вы умеете выполнять базовую установку и настройку MySQL.