嗨,我已经遵循了这个docker tutorial for mariabdb,也检查了这个stackoverflow question。我可以毫无问题地启动mariadb容器,并且可以使用mysql -h0.0.0.0 -uroot -pmypass命令使用root和mypass密码进行连接。但是,在我创建了一个新用户并授予它所有权限后,我无法使用该特定用户名和密码进行连接。我收到拒绝访问错误。
这是docker ps command的输出;
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
268c36eac13a mariadb/server:10.3 "docker-entrypoint.s…" 31 minutes ago Up 31 minutes 0.0.0.0:3306->3306/tcp mariadbtest我用docker exec -it 268c36eac13a /bin/sh连接到mariadb容器并运行这些命令;
mysql -uroot -pmypass
create database emails;
grant all on emails.* to 'testUser'@'localhost' identified by '123456';然后,当我运行mysql -h0.0.0.0 -utestUser -123456时,从本地主机得到Access denied for user 'testUser'@'172.17.0.1' (using password: YES)错误。
感谢您的帮助!
发布于 2019-05-26 14:29:47
我认为这是网络的问题:您允许用户testUser从localhost连接到您的数据库,但这意味着他只能从运行在容器中的客户端连接。正如您所看到的,当您从主机登录到您的MariaDB容器时,您将获得您的主机docker地址172.17.0.1。
一种解决方案是允许您的用户从任何ip连接:
grant all on emails.* to 'testUser'@'%' identified by '123456';或来自给定子网的IP。您可以在CREATE USER docs中查看如何执行此操作。
另一种解决方案是为主机的IP添加用户。您可以从容器内获取host IP,并为该IP添加用户。有关如何从容器获取主机IP的信息,请查看this question。
https://stackoverflow.com/questions/56309282
复制相似问题