Установка и настройка MySQL в Ubuntu 20.04

MySQL — это реляционная СУБД, которая использует язык запросов SQL. В инструкции мы рассмотрим, как запустить MySQL на Ubuntu 20.04. Для этого нам потребуется облачный сервер.

Создание облачного сервера

Создать облачный сервер с операционной системой Ubuntu 20.04 можно в Облачной платформе Selectel.

Откройте панель управления, перейдите в раздел Серверы и нажмите Создать сервер.

В качестве источника выберите в списке Ubuntu 20.04.

Сконфигурировать сервер можно любым образом, подробнее о настройках в Базе знаний.

Чтобы в дальнейшем можно было подключиться к серверу извне, создайте плавающий IP-адрес. Для этого в выпадающем списке Сеть выберите Плавающий IP-адрес.

Подготовка системы

Перед установкой MySQL сервер нужно подготовить: подключиться к нему по SSH и настроить брандмауэр с помощью UFW.

Подключение по SSH

Для подключения по SSH в терминале локальной машины введите:

ssh root@server_ip

IP-адрес сервера находится на вкладке Порты на странице сервера.

Пароль для root-пользователя, который требуется при аутентификации, можно найти на вкладке Консоль.

Настройка брандмауэра в Ubuntu

После подключения настройте брандмауэр так, чтобы он разрешал подключения к серверу по SSH.

Обновите индекс пакетов:

sudo apt update

Установите утилиту UFW для настройки брандмауэра:

sudo apt install ufw

Проверьте список профилей UFW:

sudo ufw app list

В списке должен быть указан OpenSSH:

Available applications:
  OpenSSH

Разрешите подключения по SSH:

sudo ufw allow OpenSSH

Активируйте брандмауэр:

sudo ufw enable

Убедитесь, что брандмауэр активен, и включены профили OpenSSH:

sudo ufw status

Вывод будет выглядеть так:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)   

Теперь можно переходить к установке и настройке MySQL на облачном сервере.

Установка MySQL

Установить MySQL на Ubuntu 20.04 можно через пакет:

sudo apt install mysql-server

На момент публикации инструкции по умолчанию ставится версия 8.0.23.

Вы можете проверить установленную версию:

mysql --version

Начальная настройка MySQL

Запустите скрипт для повышения безопасности MySQL:

sudo mysql_secure_installation

Система запросит разрешение на установку плагина валидации паролей. Этот плагин проверяет безопасность пароля и позволяет пользователю ставить только достаточно защищенные пароли.

Если вы хотите установить этот плагин, введите в консоли y или Y.

Есть три уровня защищенности пароля: LOW (0), MEDIUM (1) и STRONG (2). Чтобы задать уровень пароля, нажмите соответствующую цифру, например, 2 для сильного пароля. Даже если вы на предыдущем шаге не установили плагин, система запросит вас поставить пароль для пользователя root — введите его два раза.

Если плагин установлен, будет показан уровень надёжности пароля Estimated strength of the password.

Далее система задаст ряд вопросов: хотите ли вы использовать этот пароль для продолжения работы, удалить ли всех анонимных пользователей, запретить удаленно подключаться как root, удалить тестовую БД и доступ к ней, перезагрузить таблицы с привилегиями. Вы можете ответить на все эти вопросы положительно: y, Y или Enter.

Если в выводе появится All done!, то пароль для root успешно настроен.

По умолчанию вход в MySQL в Ubuntu не будет происходить по паролю. Чтобы настроить подключение через пароль, следуйте инструкции ниже.

Настройка аутентификации и управление пользователями

Аутентификация по паролю

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

Войдите в оболочку MySQL:

sudo mysql

Посмотрите, какой плагин используется:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Для пользователя root используется auth_socket:

Назначьте пользователю root новый плагин caching_sha2_password. Также установите пароль того уровня надежности, который вы задали ранее (на шаге Базовая настройка MySQL) — это может быть, например, тот же самый пароль. Введите его вместо password:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';

Некоторые приложения для работы с MySQL (например, phpMyAdmin) не будут надежно работать с плагином caching_sha2_password. В таком случае лучше установить другой плагин — mysql_native_password.

Активируйте изменения:

mysql> FLUSH PRIVILEGES;

Проверьте, что для пользователя root плагин изменился на caching_sha2_password:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Закройте командную строку MySQL:

mysql> exit

Дополнительный пользователь (опционально)

Вы можете создать дополнительного пользователя для работы с MySQL.

Если вы установили аутентификацию по паролю, изменилась команда для подключения к консоли MySQL:

mysql -u root -p

Если у вас не установлена аутентификация по паролю, то для входа в MySQL используйте:

sudo mysql

Создайте нового пользователя и поставьте пароль:

mysql> CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password';

Если вы хотите дать пользователю полный доступ к определенной базе данных, используйте:

mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'new_user'@'localhost';

Закройте консоль MySQL:

mysql> exit

Тестирование MySQL

Посмотрите статус MySQL:

systemctl status mysql

В выводе должен быть индикатор зеленого цвета и статус active:

● mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2021-03-22 09:57:07 UTC; 2h 39min ago
   Main PID: 2630 (mysqld)
     Status: "Server is operational"
      Tasks: 38 (limit: 1107)
     Memory: 331.4M
     CGroup: /system.slice/mysql.service
             └─2630 /usr/sbin/mysqld

По какой-то причине сервис может быть не активен. В таком случае запуск MySQL в Ubuntu происходит через команду:

sudo systemctl start mysql

Если вы хотите дополнительно проверить работу MySQL, используйте инструмент mysqladmin — он нужен для администрирования MySQL-сервера. Подключитесь к MySQL и запросите пароль от root:

sudo mysqladmin version -u root -p

Если вывод выглядит подобным образом, то MySQL успешно установлена и готова к использованию:

mysqladmin  Ver 8.0.23-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))
Copyright (c) 2000, 2021, Oracle and/or its affiliates.

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.23-0ubuntu0.20.04.1
Protocol version	10
Connection		Localhost via UNIX socket
UNIX socket		/var/run/mysqld/mysqld.sock
Uptime:			2 hours 47 min 34 sec

Threads: 2  Questions: 28  Slow queries: 0  Opens: 141  Flush tables: 3  Open tables: 60  Queries per second avg: 0.002

Удаление MySQL

Если по какой-то причине вам нужно удалить MySQL из Ubuntu 20.04, сначала остановите сервисы:

sudo systemctl stop mysql

Удалите пакеты MySQL:

sudo apt purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*

Удалите всех пользователей:

sudo deluser --remove-home mysql
sudo delgroup mysql

Удалите файлы базы данных, конфигурационные файлы и логи:

sudo rm -rf /etc/mysql /var/lib/mysql /var/log/mysql

Удалите оставшиеся зависимости:

sudo apt-get autoremove
sudo apt-get autoclean