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

Как установить MySQL на Ubuntu

Команда Timeweb Cloud
Команда Timeweb Cloud
Наши инженеры, технические писатели, редакторы и маркетологи
15 декабря 2021 г.
1789
6 минут чтения
Средний рейтинг статьи: 5

New Documentation

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

Как Установить My SQL На Ubuntu

Короткая версия установки проста: обновите ваш индекс пакетов, установите пакет mysql-server и запустите встроенный скрипт безопасности.

sudo apt update
sudo apt install mysql-server
sudo mysql_secure_installation

В этом руководстве мы установим MySQL версии 5.7 на сервер Ubuntu 18.04, поэтому оно вам не подойдёт, если вы хотите обновить уже существующую сборку.

Требования для установки

Для прохождения этого руководства вам потребуется сервер Ubuntu, непривилегированный пользователь с sudo-правами и брандмауэр.

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

В репозиторий пакетов APT на Ubuntu 18.04 по умолчанию включена только последняя версия MySQL. В Bionic Beaver это MySQL 5.7.

Для его установки обновите индекс пакетов своего сервера с помощью apt

sudo apt update

Затем установите пакет по умолчанию:

sudo apt install mysql-server

MySQL будет установлена, но при этом у вас не запросят задать пароль или сделать другие изменения в конфигурации. Так как из-за этого MySQL остаётся незащищённой, мы рассмотрим настройку на следующем этапе.

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

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

Запустите скрипт безопасности:

sudo mysql_secure_installation

Эта команда проведет вас через серию запросов, в которых вы можете внести изменения в параметры безопасности вашей MySQL. Сначала вас спросят, хотите ли вы настроить плагин проверки пароля (Validate Password Plugin), который можно использовать для проверки надежности паролей MySQL. Независимо от вашего выбора, далее вам нужно будет установить пароль для пользователя root MySQL. Придумайте безопасный пароль, введите, а затем подтвердите его.

Теперь вы можете нажать Y, а затем ENTER, чтобы принять значения по умолчанию для всех последующих вопросов. При этом будут удалены некоторые анонимные пользователи вместе с тестовой базой данных, а также отключится возможность удаленного входа в систему для пользователей root. После этого все внесённые изменения будут применены к вашей MySQL.

Для инициализации каталога данных MySQL вы должны использовать mysql_install_db для версий до 5.7.6 или mysqld --initialize для 5.7.6 и новее. Если же вы установили MySQL из дистрибутива Debian, как в шаге 1, директория данных уже была создана автоматически; вам не нужно ничего делать. Если вы все равно попытаетесь запустить эту команду, вы увидите следующую ошибку:

mysqld: Can't create directory '/var/lib/mysql/' (Errcode: 17 - File exists). . .2018-04-23T13:48:00.572066Z 0 [ERROR] Aborting

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

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

В системах Ubuntu под управлением MySQL 5.7 (и более поздних версий) пользователь root MySQL по умолчанию настроен на аутентификацию с использованием плагина auth_socket, а не с паролем. Во многих случаях это повышает безопасность и удобство использования, но одновременно усложняет дело, если вам нужно разрешить внешней программе (например, phpMyAdmin) доступ к MySQL.

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

sudo mysql

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

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

В этом примере видно, что пользователь root использует аутентификацию с помощью плагина auth_socket. Чтобы настроить аутентификацию с помощью пароля, выполните команду ALTER USER. Обязательно смените дефолтный  password на ваш собственный и помните, что эта команда изменит тот пароль от пользователя root, который вы установили на шаге 2:

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'пароль';

Затем выполните FLUSH PRIVILEGES, чтобы применить все правки:

FLUSH PRIVILEGES;

Снова проверьте методы аутентификации для каждого пользователя, чтобы убедиться, что пользователь root больше не использует auth_socket:

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

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

exit

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

sudo mysql

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

mysql -u root -p

Теперь создайте нового пользователя и придумайте надёжный пароль:

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

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

GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

Обратите внимание, что на этом этапе вам не нужно заново запускать команду FLUSH PRIVILEGES. Эта команда необходима только при изменении таблиц доступа с помощью операторов INSERT, UPDATE или DELETE. Поскольку вы создали нового пользователя, а не изменяете существующего, команда FLUSH PRIVILEGES здесь не требуется.

Теперь выйдите из оболочки MySQL:

exit

Наконец, давайте протестируем нашу MySQL.

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

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

systemctl status mysql.service

Если MySQL не запустилась, вы можете сделать это с помощью sudo systemctl start mysql.

Для дополнительной проверки вы можете попробовать подключиться к базе данных с помощью инструмента mysqladmin. Этот клиент позволяет запускать административные команды. Например, следующая команда сообщает, что нужно подключиться к MySQL как пользователь root (-u root), запросить пароль (-p) и вернуть версию.

sudo mysqladmin -p -u root version

Таким образом можно убедиться, что MySQL запущена и работает.

Заключение

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

Зарегистрируйтесь и начните пользоваться
сервисами Timeweb Cloud прямо сейчас

15 лет опыта
Сосредоточьтесь на своей работе: об остальном позаботимся мы
165 000 клиентов
Нам доверяют частные лица и компании, от небольших фирм до корпораций
Поддержка 24/7
100+ специалистов поддержки, готовых помочь в чате, тикете и по телефону