首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >docker无法使用不同的用户从localhost连接到mariadb

docker无法使用不同的用户从localhost连接到mariadb
EN

Stack Overflow用户
提问于 2019-05-26 06:41:48
回答 1查看 3.3K关注 0票数 2

嗨,我已经遵循了这个docker tutorial for mariabdb,也检查了这个stackoverflow question。我可以毫无问题地启动mariadb容器,并且可以使用mysql -h0.0.0.0 -uroot -pmypass命令使用rootmypass密码进行连接。但是,在我创建了一个新用户并授予它所有权限后,我无法使用该特定用户名和密码进行连接。我收到拒绝访问错误。

这是docker ps command的输出;

代码语言:javascript
复制
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容器并运行这些命令;

代码语言:javascript
复制
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)错误。

感谢您的帮助!

EN

Stack Overflow用户

回答已采纳

发布于 2019-05-26 14:29:47

我认为这是网络的问题:您允许用户testUserlocalhost连接到您的数据库,但这意味着他只能从运行在容器中的客户端连接。正如您所看到的,当您从主机登录到您的MariaDB容器时,您将获得您的主机docker地址172.17.0.1

一种解决方案是允许您的用户从任何ip连接:

代码语言:javascript
复制
grant all on emails.* to 'testUser'@'%' identified by '123456';

或来自给定子网的IP。您可以在CREATE USER docs中查看如何执行此操作。

另一种解决方案是为主机的IP添加用户。您可以从容器内获取host IP,并为该IP添加用户。有关如何从容器获取主机IP的信息,请查看this question

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56309282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档