【问题标题】:Mysql not listing all Databases for root userMysql没有列出root用户的所有数据库
【发布时间】:2022-10-05 01:41:45
【问题描述】:

我有一个在 pod 内的 k8s 集群上运行的 mysql 数据库。当我通过mysql -u root -p 登录然后输入密码时,它之前列出了所有数据库。但是我的应用程序无法连接到该数据库并显示1045, "Access denied for user 'root'@'ipaddress' (using password: YES)" 只有一个主机是 % 并且用户是 root

我也更新了机密并重新启动部署,但仍然显示上述错误。

然后我运行此命令将所有权限授予 root 用户

GRANT ALL ON root.* TO 'root'@'localhost' IDENTIFIED BY 'password';

它为 root 创建了另外一个主机,即 localhost。现在当我尝试登录时

mysql -u root -p

它没有列出我的数据库,只是显示

现在主机是本地主机。我应该怎么做才能恢复我的数据库。

【问题讨论】:

  • 您是作为具有持久存储的状态集运行还是作为具有临时存储的部署运行?
  • 是带有持久存储的 statefulset @jordanm

标签: mysql database kubernetes devops


【解决方案1】:

在 MySQL 中,授予由用户名和主机名[1]. 组成的“帐户”权限,因此就 GRANTS 而言:

myuser@127.0.0.1
myuser@192.168.1.1

以上是两个不同的用户。权限方面的通配符是%。但是%localhost 是相互排斥的,正如here 所解释的那样。

因此,考虑到这一点,您需要运行以下内容:

CREATE USER 'root'@'%' IDENTIFIED BY 'changeme';
GRANT ALL PRIVILEGES ON your_database_name.* TO 'root'@'%';

为了启用来自不同主机的连接。请记住,应避免使用用户名 root。相反,请使用专门的用户来满足您的需求。

【讨论】:

    猜你喜欢
    • 2021-11-29
    • 2020-10-08
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    • 2011-07-14
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多