前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第 53 期:MySQL 创建了用户却无法登陆

第 53 期:MySQL 创建了用户却无法登陆

作者头像
爱可生开源社区
发布2024-09-14 15:51:07
980
发布2024-09-14 15:51:07
举报
文章被收录于专栏:爱可生开源社区

社区王牌专栏《一问一实验:AI 版》全新改版归来,得到了新老读者们的关注。其中不乏对 ChatDBA 感兴趣的读者前来咨询,表达了想试用体验 ChatDBA 的意愿,对此我们表示感谢 🤟。

目前,ChatDBA 还在最后的准备阶段,会尽快跟大家见面。想预约试用的朋友,可以扫码文末的 意见反馈 二维码或点击 原文链接 填写调研问卷。我们正在对 DBA 群体试用大模型的情况进行调研,这对我们打磨 ChatDBA 的使用体验非常重要。

下面让我们正式进入《一问一实验:AI 版》的第 53 期。

问题

MySQL 创建了用户却无法登陆

用户反馈前期进行了一个升级操作:从 MySQL 5.6 升级到 5.7 后,新建了一个 sky1@% 的用户,但是通过 socket 登录报错 Access denied

实验

1. 将问题丢给 ChatDBA

我们先把这个问题丢给 ChatDBA,让他看下具体出了什么问题。

查看完整操作视频

<<< 左右滑动,点击放大 >>>

左侧为流程分析画布,展示 ChatDBA 对此问题的排查逻辑;右侧为互动区域

2. ChatDBA 协助问题排查

这个问题是说用户虽然创建了名字为 sky1 的用户,但是却登录不上去,这时 ChatDBA 给出的可能原因有:

  • 权限配置问题:没给这个用户配置 socket 登录方式
  • 数据库配置问题
  • 操作系统的权限问题
  • 匿名用户导致

ChatDBA 提示需要查询上面几处的具体信息,同时也可以看到,此时 ChatDBA 推测了一种可能得解决方案,并给出了操作步骤。

3. ChatDBA 给出解决方案

经过检查发现用户的权限等都不存在问题,但是输入用户信息表时,ChatDBA 发现确实存在匿名用户,那么他提示直接删除用户即可解决该问题。

4. 实验总结

针对该问题,ChatDBA 上述的排查步骤虽然解决了问题,但是并没有解释问题出现的根本原因。后续经过检查我们发现,当用户不输入密码的时候是可以登陆的,而且登录的用户信息如下:

代码语言:javascript
复制
mysql> select current_user();
+------------------+
|current user |
+------------------+
|@localhost |
+------------------+
1 row in set (0.00 sec)
mysql> select user();
+---------------+
| user          |
+---------------+
|sky1@localhost |
+---------------------+
1 row in set (0.00 sec)

针对这个情况我们也问了一下 ChatDBA。

他回复说其实是因为用户匹配规则导致的:

  • 使用 sky1@% 用户通过 socket 登录,host 被识别为 localhost
  • mysql.user 表中,有两个匿名用户(''@localhost''@centos76)。
  • 根据 MySQL 5.6 的匹配规则,虽然有一个 sky1@% 的用户存在,但由于存在一个 ''@localhost 的匿名用户,MySQL 优先匹配这个匿名用户。
  • 由于匿名用户没有密码,当你输入 sky1@% 用户的密码时,MySQL 会因为匿名用户没有密码而拒绝访问,报错 Access denied

但是其实在 MySQL 5.7 中优化了用户匹配规则。当使用 socket 链接时,不会优先匹配到匿名用户,因此全新安装的 MySQL 5.7 不会出现这个问题。而从 5.6 升级到 5.7 的过程中,MySQL 对用户表元数据没有更新,所以导致了用户开头出现的当从 MySQL 5.6 升级到 5.7 后,新建了一个 sky1@% 的用户,但是通过 socket 登录报错 Access denied

问问 ChatGPT-4o

我们也将相同的问题送给了 ChatGPT-4o,让我们看看效果如何。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爱可生开源社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题
    • MySQL 创建了用户却无法登陆
    • 实验
      • 1. 将问题丢给 ChatDBA
        • 2. ChatDBA 协助问题排查
          • 3. ChatDBA 给出解决方案
            • 4. 实验总结
            • 问问 ChatGPT-4o
            相关产品与服务
            云数据库 MySQL
            腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档