Debian 9 环境下使用 MySQL Workbench 无法连接本地 MySQL 5.5 服务器
这问题我之前维护Debian老版本环境时碰到过,Error 1968是MySQL 5.5中与密码认证方式、账号权限配置相关的典型报错,结合你的场景,给你一步步排查解决的思路:
第一步:先通过本地Socket方式验证root账号可用性
Debian系统上的MySQL默认配置中,root账号可能仅允许通过本地Socket而非TCP连接登录。先尝试不带-h参数的登录命令:
mysql -u root -p
输入你设置的密码root,如果能成功进入MySQL命令行,说明root账号本身是正常的,问题出在TCP连接的权限或认证配置上。
第二步:排查并修复root@127.0.0.1的权限与认证
如果Socket登录成功,执行以下操作:
查看所有root账号的主机绑定和认证插件:
SELECT user, host, plugin FROM mysql.user;重点看是否存在
root@127.0.0.1这条记录,以及它的plugin字段值(MySQL 5.5推荐使用mysql_native_password)。若不存在
root@127.0.0.1账号,创建并授权:CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'root'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' WITH GRANT OPTION;若账号存在但认证插件异常,修改为原生密码插件:
ALTER USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'root';最后刷新权限使配置生效:
FLUSH PRIVILEGES;退出MySQL后,再次用你之前的TCP命令测试登录:
mysql -u root -p -h 127.0.0.1 -P 3306
第三步:如果Socket方式也无法登录(重置root密码)
如果连Socket登录都失败,大概率是密码错误或root账号权限异常,需要跳过权限表重置密码:
- 停止MySQL服务:
service mysql stop - 以跳过权限验证的方式启动MySQL:
mysqld_safe --skip-grant-tables & - 直接无密码登录MySQL:
mysql - 更新root账号密码(注意MySQL 5.5使用
Password字段,而非新版本的authentication_string):UPDATE mysql.user SET Password=PASSWORD('root') WHERE User='root' AND Host='localhost'; FLUSH PRIVILEGES; - 退出后重启MySQL服务:
service mysql restart
第四步:检查MySQL绑定地址配置
打开MySQL配置文件(通常是/etc/mysql/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf),确认bind-address设置:
bind-address = 127.0.0.1
该配置确保MySQL监听本地TCP连接,若设置为0.0.0.0也没问题,但不要限制为其他非本地地址。修改后需重启MySQL服务生效。
完成以上步骤后,再尝试用MySQL Workbench创建连接,确认主机为127.0.0.1、端口3306、用户名root、密码正确,应该就能正常连接了。
内容的提问来源于stack exchange,提问作者Hydronit

