Тариф успешно добавлен в корзину
В корзину
url image

Установка MySQL в Ubuntu 22.04

MySQL остается одной из самых популярных систем управления реляционными базами данных, а Ubuntu — одной из наиболее распространенных операционных систем для серверов. В этой статье мы рассмотрим, как установить MySQL на Ubuntu, а также ее дальнейшую настройку.

Установка MySQL

Независимо от используемой версии системы, установка происходит одинаково. Для начала необходимо обновить список доступных пакетов из репозиториев при помощи команды:

sudo apt update

После чего, установить MySQL:

sudo apt install mysql-server

MySQL автоматически запустится. Вы можете проверить статус службы с помощью команды:

sudo systemctl status mysql
Проверка запуска MySQL

Начиная с Ubuntu 20.04, устанавливается версия 8.0 и выше, а на более ранних версиях системы 5.7. Проверить установленную версию можно командой:

mysql --version

В ответ отобразится используемая версия MySQL и системы в формате:

mysql  Ver 8.0.36-0ubuntu0.22.04.1 for Linux on x86_64 ((Ubuntu))

Сразу после завершения установки MySQL, настоятельно рекомендуется приступить к настройке сервера для повышения безопасности базы данных.

Настройка MySQL

Для начальной настройки необходимо прибегнуть к использованию mysql_secure_installation — это интерактивный скрипт, предоставляемый MySQL для улучшения безопасности.

Для его запуска достаточно выполнить команду:

sudo mysql_secure_installation

Он выполняет несколько шагов для защиты вашей базы данных от потенциальных угроз. Давайте разберем каждый шаг подробно:

  • При первом запуске инструмент попросит установить плагин валидации паролей. Потребуется выбрать тот уровень сложности пароля, который вам подходит. Для этого введите соответствующую цифру (1 или 2), а далее продолжите установку, согласно инструкции.
  • Установка пароля для root пользователя. На этом этапе скрипт запросит вас ввести текущий пароль для root пользователя MySQL. Если он еще не установлен, оставьте поле пустым и нажмите Enter. Затем он предложит вам установить новый пароль для root. Пароль для root пользователя дает полный доступ ко всем базам данных MySQL, поэтому он должен быть сложным и безопасным.
  • Удаление анонимных учетных записей. По умолчанию MySQL устанавливает анонимные учетные записи, которые позволяют входить в систему без указания имени пользователя или пароля. Это представляет уязвимость безопасности, поэтому скрипт предложит удалить эти учетные записи.
  • Отключение удаленного входа для root пользователя. Для повышения безопасности рекомендуется отключить удаленный доступ к root пользователю MySQL. Это означает, что root пользователь может входить в систему только локально, с сервера MySQL, а не удаленно через сеть.
  • Удаление тестовых баз данных и тестовых записей. MySQL устанавливает некоторые тестовые базы данных и записи по умолчанию, которые необходимы для тестирования, но представляют угрозу безопасности, если они остаются в продакшен среде. Скрипт предложит удалить их.
  • Перезагрузка привилегий (RELOAD PRIVILEGES). После завершения всех настроек скрипт перезагрузит привилегии MySQL, чтобы убедиться, что все изменения вступают в силу. Именно привилегии определяют, какие действия могут выполнять пользователи с объектами базы данных.

Рекомендуем отвечать на каждом шаге утвердительно (y).

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

Следующим этапом в настройке сервиса MySQL является установка правил аутентификации, а затем конфигурация пользователей. Аутентификация пользователей и их управление выполняется через базу данных и таблицы, содержащие информацию о пользователях и их привилегиях. Для начала нужно войти в оболочку mysql:

sudo mysql

По умолчанию в новых версиях инструмента используется аутентификация с использованием плагина caching_sha2_password. Однако для пользователя root устанавливается auth_socket. Проверить тип авторизации для конкретного пользователя поможет команда:

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

В ответ инструмент покажет список всех пользователей и используемый тип аутентификации. Для замены типа авторизации на caching_sha2_password и установки пароля пользователя нужно ввести команду, предварительно заменив «password» на необходимый пароль:

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

Применить изменения можно при помощи:

FLUSH PRIVILEGES;

После чего можно убедиться в смене типа аутентификации, выполнив команду:

SELECT user,authentication_string,plugin,host FROM mysql.user;
Проверка смены типа аутентификации

На данном этапе можно выйти из окружения:

exit;

При последующем входе в среду MySQL по стандартной команде, авторизация будет выполнена от имени обычного пользователя. Для входа от имени root нужно воспользоваться командой:

mysql -u root -p

При входе потребуется ввести ранее созданный пароль. Сразу после авторизации можно приступать к созданию нового пользователя. В этом поможет команда:

CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';

Это создаст пользователя user, который сможет подключаться только с локального хоста (localhost) и аутентифицироваться с помощью пароля password. После создания пользователя необходимо назначить ему необходимые привилегии. Для этого воспользуемся командой GRANT. Например, чтобы предоставить пользователю user полные права на все базы данных, выполните следующую команду:

GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost';

Если вы хотите предоставить конкретные привилегии пользователю user на все базы данных, то вам нужно изменить команду GRANT, чтобы указать только необходимые привилегии. Пример команды с правами на чтение:

GRANT SELECT ON *.* TO 'user'@'localhost';

Команда с правами для записи:

GRANT INSERT, UPDATE ON *.* TO 'user'@'localhost';

Для предоставления этих прав только для конкретной базы данных, замените *.* на имя этой базы данных, например:

GRANT SELECT ON database_name.* TO 'user'@'localhost';

Для удаления пользователя используйте команду DROP USER. Например, чтобы удалить пользователя user, выполните следующую команду:

DROP USER 'user'@'localhost';

После выполнения данных команд не требуется выполнять FLUSH PRIVILEGES. Достаточно выполнить выход из окружения командой:

exit;

Проверка работоспособности MySQL

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

sudo systemctl status mysql

Эта команда покажет текущий статус службы MySQL, включая информацию о том, запущен ли сервер успешно:

Проверка текущего статус службы MySQL

В случае, если сервис не активен, активировать его можно командой:

systemctl start mysql

Также можно попробовать подключиться при помощи инструмента mysqladmin:

sudo mysqladmin -p -u root version

Потребуется ввести пароль пользователя root, в ответ отобразится информация о сервисе. Если полученных данных недостаточно, следующим этапом создадим тестовую базу данных и таблицу. Для этого входим в оболочку:

mysql -u root –p

Создаем базу данных, последовательно вводя команды:

CREATE DATABASE testdb;
USE testdb;
CREATE TABLE testtable (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255));

Добавляем некоторые тестовые данные в таблицу. Например,

INSERT INTO testtable (name) VALUES ('Test Data 1'), ('Test Data 2'), ('Test Data 3');

Выполняем запрос для проверки добавленных данных:

SELECT * FROM testtable;

Этот запрос должен показать добавленные вами тестовые данные в виде таблицы:

Вывод тестовых данных в виде таблицы

Удаление MySQL

Прежде всего, остановите службу MySQL, чтобы предотвратить ее выполнение во время удаления. Выполните следующую команду в терминале:

sudo systemctl stop mysql

Наиболее распространенная команда для удаления пакетов:

apt remove --purge mysql-server mysql-client

Однако она удаляет только основные пакеты MySQL, но оставляет конфигурационные файлы. Чтобы удалить оставшиеся конфигурационные файлы и логи, выполните:

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

Для удаления всех пакетов, которые были установлены как зависимости MySQL, выполните:

apt autoremove

Так как мы создавали специального пользователя для MySQL, нужно удалить и его, выполнив последовательно команды:

deluser mysql
rm -rf /home/mysql

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

systemctl status mysql

После чего последовательно проверить все удаленные каталоги, они должны отсутствовать:

ls -ld /etc/mysql
ls -ld /var/lib/mysql
ls -ld /var/log/mysql
ls -ld /home/mysql
Проверка отсутствия удаленных каталогов

Если проверка пройдена успешно, это означает, что MySQL, все зависимости, файлы конфигурации и логи были полностью удалены с системы.

Заключение

Мы подробно рассмотрели процесс установки и настройки MySQL на операционной системе Ubuntu. Надеемся, что предоставленная информация была полезной и позволит вам успешно настроить базу данных MySQL на вашем сервере.

Не забывайте следовать рекомендациям безопасности и регулярно обновлять установленное ПО для обеспечения надежной и эффективной работы вашего хостинга.

Этот материал был полезен?

Скидка 25% новым клиентам!
Закажи сервер сегодня и получи скидку на первый месяц аренды!