Конечная цель - запустить последнюю версию 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