MySQL-客户端登录问题
1. 问题描述
客户端工具使用账号文件连接服务失败,如下图
2. 问题分析排查
2.1 命令行方式或是使用全局配置文件验证账号密码文件是否有误
mysqladmin --defaults-file=/tmp/tmp.ddNIfIJeas ping
mysqladmin --host=localhost --user=root --password=root --port=3308 --socket=/ups/app/mysql/mysql3308/logs/mysql3308.sock ping
-- 如果都正常,表明账号密码文件配置无误。否则,检查文件是否配置异常(如书写错误)
2.2 检查全局配置文件是否存储了默认配置信息
-- 全局参数配置优先级 mysqladmin |grep -A1 'Default options'

-- 注意: 上面的配置文件优先级都比自定义路径配置文件优先级高,相同配置被覆盖,这也会引起连接数据库失败。
2.3 检查全局参数配置文件及自定义配置文件中程序或组名称配置
如果选项组名称与程序名称相同,则该组中的选项专门适用于该程序。例如,[mysqld]和[mysql] 组分别应用于mysqld服务器和 mysql客户端程序。前导和尾随空格会自动从选项名称和值中删除。配置文件中后面指定的选项将覆盖先前指定的选项。
01 02 03 04 05 06 07 08 09 10 11 12 | [client] port=3306 socket= /tmp/mysql .sock [mysqld] port=3306 socket= /tmp/mysql .sock key_buffer_size=16M max_allowed_packet=8M [mysqldump] quick |
-- [mysqldump]可使 mysqldump特定的选项覆盖 [client]选项,因此,有可能导致客户端选项值与自己预期的不一样导致连接失败。
此次问题的原因是~/.my.cnf文件配置选项值配置错误账号密码且它的优先级高于自定义配置文件,从而导致登录数据库失败。
3. 总结
1)先排查或是依次列出服务器上所有的参数配置文件路径并逐一检查文件选项组中选项值
01 02 03 04 | for item in $(mysqladmin | awk '/^Default options/{getline;print}' | awk '{i=1;while(i<=NF) {print $i;i++}}' ); do echo "$item:" [[ -f "$item" ]] && grep '^\[[a-Z0-9]*\]' $item done |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)