You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何重启MySQL服务时避免出现ERROR 1045访问拒绝错误

问题核心结论

重启MySQL服务属于系统级进程管理操作,本身不需要传入任何数据库主机、账号、密码类认证信息,你看到的1045访问拒绝报错,和服务重启动作本身没有直接关系,也无法通过在重启命令后追加认证参数的方式解决。


报错原因说明
  • sudo service mysql restart的执行逻辑是通过系统服务管理器向MySQL进程发送停止、启动信号,全程走系统级进程权限,不涉及MySQL数据库层面的账号鉴权。
  • 你看到的ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)提示,是MySQL服务启动完成后,系统自带的服务健康检查脚本、或默认客户端逻辑自动调用无参数的mysql命令尝试连接本地实例时抛出的错误:本地MySQL客户端默认读取的配置中没有配置正确的root账号密码,默认会以无密码方式尝试连接,自然会被鉴权拦截。
  • 这个报错不代表服务重启失败,执行sudo service mysql status查看服务状态,如果显示active (running)就证明服务已经正常启动完成。你手动指定-u root -h localhost -ppassword参数连接正常,也能佐证服务本身运行无异常,只是默认无参数连接的认证信息不对。

报错消除方法

不要在service mysql restart命令后追加数据库连接参数,该命令属于系统服务管理指令,根本不识别这类数据库参数,追加后不仅不会生效还可能触发命令解析错误。正确的解决方式是给本地MySQL客户端配置默认连接参数,让所有无参数调用mysql的场景都能自动读取正确的认证信息:

  1. 编辑执行service命令对应的用户家目录下的.my.cnf配置文件(如果用sudo执行,对应root用户,配置文件路径为/root/.my.cnf),写入如下配置:
[client]
user = root
password = 你的MySQL root账号实际密码
host = localhost
default-character-set = utf8mb4
  1. 给配置文件设置600权限,避免其他普通用户读取到明文密码:
chmod 600 /root/.my.cnf

配置完成后,后续重启MySQL服务时,自动触发的客户端连接会直接读取配置文件里的认证信息,不会再出现无密码连接被拒的报错,平时直接敲mysql命令也不需要手动输入连接参数就能直接登录。


内容的提问来源于stack exchange,提问作者Clone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 00:57:19