Описание и технические требования
СУБД MySQL надежное и заслуживающее доверия решение для управления базами данных при разработке веб-приложений. Система является частью стека LAMP, содержащего в себе такие компоненты как:
- Apache;
- Linux;
- MySQL;
- PHP/Python/Perl.
Для того чтобы установить MySQL на Ubuntu, необходимо соблюсти следующие условия:
- Административный доступ к серверу.
- По возможности не использовать для администрирования root-доступ.
- На сервер необходимо инсталлировать ОС Ubuntu 18.04.
Установка MySQL в Ubuntu 18.04
Подобная установка MySQL на сервер Ubuntu, состоит из четырех этапов:
- Установка.
- Настройка.
- Настройка привилегий.
- Тестирование.
Установка
В репозитории Ubuntu, как правило, располагается актуальная версия MySQL. Для обновления индекса пакетов используется команда – apt:
sudo apt update
sudo apt install mysql-server
Подчеркиваем, что подобный метод инсталляции не до конца безопасен, поскольку не требуется вводить пароль либо других ограничивающих данных. После установки необходима обязательная настройка MySQL.
Настройка
После установки «чистой» версии MySQL в обязательном порядке запускается скрипт, который отвечает за безопасность. Он меняет ключевые настройки безопасности. Например, генерирует пароли пользователей с правами root, которые не были заданы по умолчанию.
В более ранних выпусках СУБД была инициализация скрипта в ручном режиме. Сейчас, это выполняется автоматически.
Для безопасного выполнения скрипта используется следующая команда:
sudo mysql_secure_installation
Результатом станет предложение о внесении изменений в конфигурационные файлы безопасности. На этом этапе необходимо выполнить три действия:
- Инсталлировать Validate Password Plugin, отвечающий за проверку допустимости паролей в СУБД.
- Сгенерировать пароль пользователям, обладающим root-правами.
- Ввести сгенерированный пароль еще раз.
Для последующих действий достаточно нажать символ «Y» (согласие с операцией) и клавишу «ENTER» (выполнение операции).
По окончании алгоритма будут удалены анонимные пользователи, а также тестовые базы данных. Возможность удаленного подключения для пользователей с правами root будет отключена.
Все эти изменения сохранятся по отношению к конкретно устанавливаемой базе данных MySQL. Активация новой базы данных происходит посредством команды:
mysql_install_db
Указанный скрипт работает только для MySQL 5.7.6 и старше.
Более «свежие» версии оболочки потребуют введения команды:
mysqld –initialize
Настройка привилегий
Смена способа аутентификации
На серверах с операционной системой Ubuntu и установленной MySQL (версии 5.7 и старше) аутентификация пользователя с правами root происходит через плагин «auth_socket» без ввода пароля. Это достаточно надежная схема, но она может потерять актуальность в случае подключения внешнего софта, например – phpMyAdmin.
Для обеспечения безопасности и создания доступа для пользователей со статусом root, входить нужно при помощи пароля. Для чего метод идентификации через плагин «auth_socket» меняется на идентификацию через пароль «mysql_native_password».
Чтобы произвести замену, для начала входим в MySQL как пользователь root через команду:
sudo mysql
Далее, делается проверка на метод идентификации для каждого пользователя root посредством команды:
SELECT user,authentication_string,plugin,host FROM mysql.user;
Вывод:
Приведенный лог проверки показывает, что пользователь, наделенный правами root, авторизуется через плагин auth_socket.
Применить авторизацию при помощи пароля можно командой:
ALTER USER
При этом необходимо изменить значение «password» на надежный пароль. Полная команда выглядит так:
'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Необходимо проверить, что новые настройки вступили в силу, и пользователь root входит, только используя пароль, без помощи плагина auth_socket. Команда:
SELECT user,authentication_string,plugin,host FROM mysql.user;
Вывод:
В списке видно, что пользователи с правами root проходят идентификацию, вводя пароль, а не через плагин. Получив такое подтверждение, можно выполнить выход из MySQL через команду:
exit
Смена способа аутентификации
В некоторых случаях может потребоваться создание отдельного пользователя с ограниченными правами. Например, он может добавлять в базу новые данные, но удалять или корректировать их не сможет.
Для этого выполняется вход в среду базы:
sudo mysql
Не стоит забывать, что если была включена авторизация при помощи ввода пароля, как было описано выше, привилегии вошедшему будут выданы, как для рядового пользователя. Для доступа с правами root необходимо ввести команду:
mysql -u root -p
После этого появится возможность создания нового пользователя базы данных и генерации для него надежного пароля. Сделать это можно командой:
CREATE USER 'пользователь'@'localhost' IDENTIFIED BY 'password';
Новому пользователю можно делегировать определенное количество функций. Например, полный доступ к таблицам или право на внесение и изменение данных. Изменять пользовательские привилегии можно следующей командой:
GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' WITH GRANT OPTION;
На последнем шаге выполняется команда:
exit
Она позволяет выйти из системы MySQL.
Тестирование
Когда настройка MySQL на Ubuntu закончена, необходимо удостовериться в корректности работы сервера базы данных. Выполнить это можно двумя способами:
- Проверка автоматического запуска.
- Принудительное подключение к базе данных.
Независимо от способа установки базы данных, она запускается в автоматическом режиме. Проверить это можно при помощи команды:
systemctl status mysql.service
В логе консоли должен появиться вывод, соответствующий нижеприведенному:
В случае, когда сервер базы данных еще не запущен активация осуществляется командой:
sudo systemctl start mysql
Для вторичного контроля можно использовать принудительное подключение к базе данных посредством команды:
sudo mysqladmin -p -u root version
Для введения административных команд наиболее удобно использовать инструмент mysqladmin, являющимся внутренней утилитой MySQL.
Ответ от сервера должен выглядеть примерно следующим образом:
Данный ответ подтверждает, что сервер базы данных запущен и находится в рабочем состоянии.
Удаление MySQL
Иногда возникают ситуации, требующие удаления MySQL из Ubuntu. Например, когда нужно опробовать новую базу данных.
Удаление MySQL в Ubuntu начинается с ее остановки при помощи команды:
sudo service mysql stop
Если необходима полная деинсталляция базы данных, включая пользователей, пакеты, настройки конфигурации и прочее, относящееся к СУБД, то нужно последовательно выполнить следующие команды:
sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean
Если необходимо сохранить файлы конфигурации, а также данные, список команд выглядит по-другому:
$ sudo apt-get remove mysql-server mysql-client mysql-common
$ sudo apt-get autoremove
$ sudo apt-get autoclean