У меня есть одна виртуальная машина для моего сайта и одна для моих баз данных (MySQL 5.7). Виртуальные машины на Debian 9

Я хотел бы подключиться к MySQL с моего сайта VM.

Я устанавливаю все, используя ansible, чтобы он не создавал пароль root, а это значит, что он использует плагин auth_socket по умолчанию. Это также означает, что я не могу подключиться с виртуальной машины своего веб-сайта к корневому пользователю этой виртуальной машины. Я могу подключиться к учетной записи root только в том случае, если я нахожусь в моей базе данных VM и под пользователем root (если вы не знаете, как это изменить).

Так что я не знаю точно, что делать, но я нашел два решения:- приписать пароль root и изменить плагин для использования паролей, как здесь https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/ - создать нового пользователя с именем "root2" и дать ему полные права только в моей локальной сети

Какое еще решение у меня есть? какой из них кажется оптимальным?

1 ответ1

0

Вы не можете использовать авторизационный сокет с другого компьютера, вам нужно создать пользователя mysql с паролем и подключиться через tcp/ip.

Не используйте root, это такая плохая идея. Я бы предложил вариант 3:

Создайте нового пользователя (обычно у каждого приложения будут свои пользователь и база данных) и дайте ему как можно меньше прав на как можно меньше объектов (принцип наименьших привилегий). Использование root дало бы вашему веб-серверу права на создание или удаление баз данных, пользователей, настройку конфигурации во время выполнения и т.д. Все это необычно и опасно.

Ansible предоставляет mysql_user, который может создавать пользователей базы данных: https://docs.ansible.com/ansible/latest/modules/mysql_user_module.html

Затем обновите строку подключения на веб-сервере и убедитесь, что порт tcp/ip 3306 доступен на сервере базы данных. В идеале должны быть разрешены только ваш dev ip и веб-сервер (опять же с подходом наименьших привилегий). Смотрите http://en.wikipedia.org/wiki/Principle_of_least_privilege).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .