【问题标题】:cannot access mariadb in docker by other user then root其他用户无法访问 docker 中的 mariadb,然后是 root
【发布时间】:2020-10-11 08:02:46
【问题描述】:

我在 Synology nas 上有一个带有 mariadb 的 docker 容器。
mariadb 版本为 10.4.12。
通过尝试通过最新的 dBeaver 从 linux 客户端访问 mariadb,我得到了以下行为。

  • 从客户端以root用户访问成功。
  • 通过 docker 内部的 root 用户访问成功。
    到目前为止一切顺利!
    然后我通过以下命令创建了以下用户:
CREATE USER 'myUser'@'%' IDENTIFIED BY 'secretPassword';
GRANT select, update, insert, delete ON mydb.* TO 'myUser'@'%';

在此之后我刷新了权限

使用此用户,我无法从 docker 容器内部登录,也无法从客户端登录。
取决于我尝试过的地方,我得到了“用户'myUser'@'172.17.0.1'的访问被拒绝”。

mariadb 字符集是 UTF8。
mysql.user 中的插件设置为:mysql_native_password
在 /etc/mysql/my.cnf 中,绑定已启用并设置为 0.0.0.0

  • 我尝试使用上面的 listet 命令创建相同的用户,使用 localhost 和 clientIP 也没有成功。
  • 我重新启动了 docker 容器但没有成功。
  • 我将 ALL 授予此用户并再次刷新权限,但没有成功。
  • 我删除了所有 myUser 并创建了具有额外使用权限的 myUser@% new,但也没有成功。

是否知道我可以做什么/如何解决此问题?
任何帮助将不胜感激!

提前谢谢你

【问题讨论】:

    标签: mysql docker mariadb synology


    【解决方案1】:

    我找到了解决办法!!
    我为用户使用了一个自动生成的密码:

    G(m&>JBR,9ä
    

    这不起作用。
    在我将密码更改为新密码后。一切正常!

    密码中可以包含哪些字符有任何限制吗?

    【讨论】:

    • 如果您从命令行使用密码,&; 字符可能被解释为 shell 元字符。使用单引号来防止这种情况,例如mysql -u myUser -p'G(m&>JBR,9ä'
    【解决方案2】:

    只需去掉“%”

    为了更方便,我还添加了几个组合。

    CREATE USER 'myUser'@'localhost' IDENTIFIED BY 'secretPassword';
    GRANT select, update, insert, delete ON mydb.* TO 'myUser'@'localhost';
    
    CREATE USER 'myUser'@'%' IDENTIFIED BY 'secretPassword';
    GRANT select, update, insert, delete ON mydb.* TO 'myUser'@'%';
    
    CREATE USER 'myUser'@'' IDENTIFIED BY 'secretPassword';
    GRANT select, update, insert, delete ON mydb.* TO 'myUser'@'';
    

    【讨论】:

      猜你喜欢
      • 2017-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-01
      • 2010-10-13
      • 1970-01-01
      • 1970-01-01
      • 2017-08-07
      相关资源
      最近更新 更多