修改MySQL root密码后Drupal 8站点报错无法访问如何解决
问题根因
MySQL的账号以用户名@访问来源地址作为唯一标识,root@localhost和root@[报错中的DBIP]是两个完全独立的账号,权限、密码互不关联。你仅修改了本地登录的root账号密码,Drupal通过IP访问数据库时使用的是另一root账号,密码未同步更新,因此触发访问拒绝报错。
解决方案
- 登录MySQL命令行,执行以下命令查询所有root关联账号,确认Drupal连接对应的访问地址配置:
SELECT user,host FROM mysql.user WHERE user='root'; - 根据查询到的host值修改对应账号的密码:
- 若host字段值为报错中显示的具体DBIP,执行:
ALTER USER 'root'@'你的实际DBIP地址' IDENTIFIED BY '你设置的新密码'; - 若host字段值为通配符
%(代表允许任意地址访问),执行:ALTER USER 'root'@'%' IDENTIFIED BY '你设置的新密码';
- 若host字段值为报错中显示的具体DBIP,执行:
- 执行权限刷新命令使修改立即生效:
FLUSH PRIVILEGES; - 确认
sites/default/settings.php中数据库配置的host、密码与上述配置一致,清空Drupal缓存后重新访问站点即可恢复。
补充建议
生产环境不建议使用root账号作为站点的数据库连接账号,建议单独创建仅拥有目标数据库权限的专用账号,降低安全风险。
内容的提问来源于stack exchange,提问作者IDI
相关产品推荐
相关产品推荐

