Установка Oracle MySQL 5.7 на Debian 9

Ни для кого не секрет, что при попытке установить mysql-server в Debian 9 будет установлена MariaDB 10.1, но что делать если Вам все таки нужен родной Oracle MySQL 5.7 на Debian 9?

Исходные данные: ОС Debian 9.4 (Stretch);
Задача: Установить Oracle MySQL 5.7.x с минимум телодвижений и произвести базовую настройку БД;

Установка Oracle MySQL 5.7.22 на Debian 9:

1. Установка необходимых доп. пакетов:

apt-get update
apt-get install wget -y

2. Установка репозитария Oracle для нужной версии MySQL:

wget https://dev.mysql.com/get/mysql-apt-config_0.8.10-1_all.deb
dpkg -i mysql-apt-config_0.8.10-1_all.deb && rm -f mysql-apt-config_0.8.10-1_all.deb

Актуальную версию пакета mysql-apt-config можно найти на этой страничке.

После запуска у нас спросят репозитарий для какой версии MySQL мы хотим установить (mysql-5.6, mysql-5.7, mysql-8.0 или mysql-cluster-7.5), а так же нужен ли нам репозитарий с дополнительными утилитами. Мы оставим все по-умолчанию и нажмем OK.

3. Установка MySQL 5.7.x:

Выполним обновление списка пакетов и установим mysql-community-server:

apt-get update
apt-get install mysql-community-server -y

В процессе установки инсталлятор попросит нас придумать пароль пользователя root, на данном этапе мы его оставим пустым и поменяем потом.

ВНИМАНИЕ! Оставив пароль пустым мы активируем механизм аутентификации для пользователя root через плагин auth_socket и в дальнейшем мы будем подключаться к MySQL под пользователем root без пароля. С одной стороны это удобно, но с другой может быть угрозой безопасности. Чуть ниже перед запуском mysql_secure_installation мы поменяем механизм аутентификации для root.

После установки проверим статус работы Oracle MySQL:

# systemctl status mysql
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2018-03-16 16:14:45 +05; 1min 10s ago
 Main PID: 3412 (mysqld)
   CGroup: /system.slice/mysql.service
           └─3412 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

Mar 16 16:14:43 mysql01 systemd[1]: Starting MySQL Community Server...
Mar 16 16:14:45 mysql01 systemd[1]: Started MySQL Community Server.
# netstat -ltupn | grep mysql
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      3412/mysqld

# ps -ef | grep [m]ysql
mysql     3412     1  0 16:14 ?        00:00:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

А так же попробуем подключиться к БД с помощью команды mysql (т.к. на этапе установки мы оставили пароль root пустым, то использовать опции -u root -p мы не будеи):

# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.22 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

Мы успешно подключились к серверу Oracle MySQL.

4. Теперь запустим мастер настройки безопасности:

Перед тем как запускать мастер настройки безопасности нам нужно поменять механизм аутентификации для пользователя root, сделать это можно так:

mysql -u root mysql -e "update user set plugin='mysql_native_password' where user='root' and host='localhost'; flush privileges;"

Теперь запустим мастер настройки безопасности:

mysql_secure_installation

На вопрос:
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No:
вводим No, мы не хотим использовать плагин проверки стойкости паролей.

Далее нас попросят установить новый пароль root, введем СЛОЖНЫЙ пароль.
Please set the password for root here.
New password:

Далее вопрос:
Remove anonymous users? (Press y|Y for Yes, any other key for No) :
вводим Y, мы хотим удалить анонимного пользователя.

Далее вопрос:
Disallow root login remotely? (Press y|Y for Yes, any other key for No) :
вводим Y, да мы хотим запретить подключаться под пользователем root с удаленных машин.

Далее вопрос:
Remove test database and access to it? (Press y|Y for Yes, any other key for No) :
вводим Y, да мы хотим удалить тестовую базу test

И последний вопрос:
Reload privilege tables now? (Press y|Y for Yes, any other key for No) :
вводим Y, да мы хотим перезагрузить таблицу привилегий для вступления их в силу.

После этого мы выполнили минимальные меры по защите нашего экземпляра Oracle MySQL.

Попробуем теперь подключиться к базе:

# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Как мы видим с пустым паролем root нас больше не пускают.

Подключимся с указанием дополнительных опций и вводом пароля и введем пару команд:

# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 32
Server version: 5.7.22 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SELECT CURRENT_USER();
+----------------+
| CURRENT_USER() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

mysql> SELECT version();
+------------+
| version()  |
+------------+
| 5.7.22-log |
+------------+
1 row in set (0.00 sec)

mysql> SELECT User, Host, HEX(authentication_string) FROM mysql.user;
+---------------+-----------+------------------------------------------------------------------------------------+
| User          | Host      | HEX(authentication_string)                                                         |
+---------------+-----------+------------------------------------------------------------------------------------+
| root          | localhost | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX24141 |
| mysql.session | localhost | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX55245 |
| mysql.sys     | localhost | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX55245 |
+---------------+-----------+------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)

Отлично, все получилось.

На этом все, до скорых встреч. Если у Вас возникли вопросы или Вы хотите чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.


Хотите оставить комментарий?