Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.
Кратко о задаче
Для прохождения этого руководства вам потребуется сервер Ubuntu, непривилегированный пользователь с sudo-правами и брандмауэр.
В репозиторий пакетов APT на Ubuntu 18.04 по умолчанию включена только последняя версия MySQL. В Bionic Beaver это MySQL 5.7.
Для его установки обновите индекс пакетов своего сервера с помощью __apt:
Затем установите пакет по умолчанию:
sudo apt install mysql-serverMySQL будет установлена, но при этом у вас не запросят задать пароль или сделать другие изменения в конфигурации. Так как из-за этого 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:
Затем проверьте, какой метод аутентификации использует каждая из ваших учетных записей 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, чтобы применить все правки:
Снова проверьте методы аутентификации для каждого пользователя, чтобы убедиться, что пользователь root больше не использует __ auth_socket:
SELECT user,authentication_string,plugin,host FROM mysql.user;Убедившись, что пользователь root теперь аутентифицируется с помощью пароля, вы можете выйти из оболочки MySQL:
Некоторым для их рабочего процесса удобней подключаться к MySQL через отдельного пользователя. Для его создания, снова откройте оболочку MySQL:
Примечание : если у вас включена аутентификация по паролю для пользователя root, как описано в выше, для доступа к оболочке вам нужно будет использовать другую команду. Команда выше будет запускать ваш клиент MySQL с правами обычного пользователя, поэтому, чтобы получить права администратора для своей базы данных, запустите:
Теперь создайте нового пользователя и придумайте надёжный пароль:
CREATE USER 'twcloud'@'localhost' IDENTIFIED BY 'password';Затем предоставьте новому пользователю необходимые права. К примеру, вы можете предоставить пользователю доступ ко всем таблицам в базе данных, а также право добавлять, изменять и удалять права пользователей с помощью следующей команды:
GRANT ALL PRIVILEGES ON *.* TO 'twcloud'@'localhost' WITH GRANT OPTION;Обратите внимание, что на этом этапе вам не нужно заново запускать команду FLUSH PRIVILEGES. Эта команда необходима только при изменении таблиц доступа с помощью операторов INSERT , UPDATE __ или DELETE . Поскольку вы создали нового пользователя, а не изменяете существующего, команда __FLUSH PRIVILEGES здесь не требуется.
Теперь выйдите из оболочки MySQL:
Наконец, давайте протестируем нашу 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 запущена и работает.
Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.