Назад | Перейти на главную страницу

Как мне предоставить или изменить существующего пользователя, чтобы разрешить удаленную аутентификацию в MySQL 8?

Конечная цель - запустить последнюю версию Zabbix в контейнере, контролируя кучу переключателей.

Zabbix требует некоторого вкуса MySQL (или postgres), поэтому я решил использовать официальный (Oracle) MySQL 8.0.19 MySQL FOSS образ. У меня работает контейнер MySQL, но я случайно настроил пользователя zabbix db, чтобы он имел только права локального подключения.

mysql> SELECT user,host FROM mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | %         |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
| zabbix           | localhost |
+------------------+-----------+
6 rows in set (0.00 sec)

Кажется, я не могу изменить этого пользователя, чтобы он мог подключаться из других контейнеров в группе, zabbix-server-mysql и zabbix-web-apache-mysql.
Возможно, есть способ запустить новый контейнер, чтобы база данных zabbix была доступна пользователю zabbix по сети.
И я недостаточно хорошо понимаю докер, чтобы знать, действительно ли мне нужно, чтобы контейнеры общались друг с другом по сети, или есть какая-то волшебная функциональность докера, с помощью которой они могут общаться без IP-сети.

Пожалуйста, порекомендуйте.

Самый простой способ - использовать оператор RENAME USER:

RENAME USER 'zabbix'@'localhost' TO 'zabbix'@'%';

Кроме того, корневой% вверху не подходит. Это означает, что root имеет удаленный доступ к базе данных из любой точки сети. Обычно вы хотите ограничить это только localhost, чтобы удалить этого пользователя, и все будет хорошо. (Вам нужно убедиться, что у вас есть способ попасть в контейнер докеров через локальный компьютер, чтобы вы могли получить доступ к MySQL локально, иначе вы можете потерять доступ, когда удалите этого пользователя)

DROP USER 'root'@'%';

Проверьте свои гранты, чтобы убедиться, что у пользователя zabbix @% есть доступ к базе данных zabbix:

SHOW GRANTS FOR 'zabbix'@'%';

Это позволит правильно настроить пользователей MySQL. Вам просто нужно выяснить, как настроить контейнеры докеров для правильного взаимодействия друг с другом. Я не уверен, что они могут общаться без специального доступа к сети.

https://dev.mysql.com/doc/refman/8.0/en/rename-user.html
https://dev.mysql.com/doc/refman/8.0/en/drop-user.html
https://dev.mysql.com/doc/refman/8.0/en/create-user.html
https://dev.mysql.com/doc/refman/8.0/en/alter-user.html
https://dev.mysql.com/doc/refman/8.0/en/show-grants.html