Установка и настройка 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

Что еще почитать по теме

Эллада Нуралиева 22 июня 2021

Next-Generation Firewall от FortiGate: обзор функций и подключение сервиса

Для защиты инфраструктуры от угроз часто используют межсетевые экраны. Они могут быть как программными, так и аппаратными. Типичный межсетевой экран представляет собой фильтр сетевого трафика, который…
Эллада Нуралиева 22 июня 2021
Николай Рубанов 29 мая 2020

Инкрементальный бэкап в Proxmox VE с помощью VBR

В одной из предыдущих статей цикла про гипервизор Proxmox VE мы уже рассказывали, как выполнять бэкап штатными средствами. Сегодня покажем, как для этих же целей использовать отличный инструмент Veeam…
Николай Рубанов 29 мая 2020

Новое в блоге

Владимир Туров 18 сентября 2021

Разбираем редкого зверя от Nvidia — DGX A100

Крупные IT-компании располагают дорогими «игрушками», которые скрыты от взоров большинства пользователей. Сегодня мы приоткроем завесу тайны и расскажем про систему, которая оптимизирована для работы …
Владимир Туров 18 сентября 2021
Андрей Зайцев 8 сентября 2021

Продуктовый дайджест: новые серверы, Selectel Connect и обновления «Облачной платформы»

У нас обновления в конфигурациях серверов, кластерах Kubernetes и разделах базы знаний. А еще обратите внимание на сервис Selectel Connect. В конце дайджеста — анонс конференции по ML и записи митапов…
Андрей Зайцев 8 сентября 2021
Ульяна Малышева 12 августа 2021

RHVoice Lab: как серверы помогают создавать голоса для синтезаторов речи

В этом году Selectel стал поддерживать некоммерческий проект RHVoice Lab — лабораторию по созданию новых голосов для одноименного отечественного синтезатора речи. Его особенность в том, что синтезатор…
Ульяна Малышева 12 августа 2021
Ульяна Малышева 11 августа 2021

Продуктовый дайджест: автомасштабирование в Managed Kubernetes и две услуги в бете

Запустили две услуги в бете — «Файловое хранилище» и «Бэкапы по расписанию», реализовали автомасштабирование нод в Managed Kubernetes, а также добавили возможность арендовать виртуальные серверы с гар…
Ульяна Малышева 11 августа 2021