O objetivo final é ter a versão mais recente do Zabbix rodando em container, monitorando vários switches.
O Zabbix quer um pouco do MySQL (ou postgres) então eu pensei em usar a imagem oficial (Oracle) MySQL 8.0.19 MySQL FOSS. Eu tenho um contêiner MySQL em execução, mas acidentalmente configurei meu usuário zabbix db para ter apenas privilégios de conexão local.
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)
Não consigo alterar este usuário para que ele possa se conectar a partir dos outros contêineres do grupo, zabbix-server-mysql e zabbix-web-apache-mysql.
Talvez haja alguma maneira de lançar um novo container para que o banco de dados 'zabbix' esteja disponível para o usuário zabbix pela rede.
E eu não entendo o docker bem o suficiente para saber se eu realmente preciso ter os contêineres conversando entre si pela rede ou existe alguma funcionalidade mágica do docker pela qual eles podem se comunicar sem rede IP.
Por favor informar.
A maneira mais fácil é usar a instrução RENAME USER:
RENAME USER 'zabbix'@'localhost' TO 'zabbix'@'%';
Além disso, esse % de raiz no topo não é bom. Isso significa que o root tem acesso remoto ao banco de dados de qualquer lugar na rede. Você geralmente quer restringir isso ao localhost apenas para descartar esse usuário e você deve ser bom. (Você precisará ter certeza de ter uma maneira de entrar no contêiner do docker por meio da máquina local para poder acessar o MySQL localmente, caso contrário, poderá perder o acesso ao descartar esse usuário)
DROP USER 'root'@'%';
Verifique suas concessões para garantir que o usuário zabbix@% tenha acesso ao banco de dados 'zabbix':
SHOW GRANTS FOR 'zabbix'@'%';
Isso fará com que seus usuários do MySQL sejam configurados corretamente. Você só terá que descobrir como configurar seus contêineres docker para se comunicarem corretamente uns com os outros. Não tenho certeza se eles podem se comunicar sem especificamente dar a eles acesso à rede.
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