如何在PHP的dbh文件中为root@localhost配置MySQL/MariaDB访问权限
问题根本原因
Ubuntu 20.04 版本默认安装的 MariaDB 对 root@localhost 用户默认启用 Unix 套接字认证,仅允许服务器本地的 root 系统用户免密登录,不支持密码登录,所以哪怕你密码正确,PHP 用密码方式发起连接也会触发权限报错。
解决步骤
1. 登录 MariaDB 管理终端
直接在 Ubuntu 服务器命令行执行以下命令,不需要输入密码即可进入 MariaDB 交互界面:
sudo mariadb -u root
2. 修改认证方式并保留现有密码
如果你已经为 MariaDB root 用户设置过密码,直接执行以下 SQL 语句即可,将语句中的你的现有root密码替换为你实际在用的 root 密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的现有root密码';
如果你还没有设置过 root 密码,把上面语句里的密码部分替换为你想要设置的密码即可。
3. 刷新权限使配置生效
执行以下 SQL 让配置立即生效:
FLUSH PRIVILEGES;
执行完成后输入exit退出 MariaDB 终端。
4. 核对 PHP 代码配置
确认你代码中的$DATABASE_PASS变量填写的就是上面步骤用到的密码,不要留空。
可选验证步骤
你可以先在命令行测试密码是否配置正确,执行:
mariadb -u root -p
输入你设置的密码,能正常登录就说明数据库侧配置无误,再刷新网页测试 PHP 连接即可。
注意事项
- 开发环境用 root 用户连接数据库没问题,生产环境请单独创建专用数据库用户、仅分配对应库的操作权限,不要直接用 root 账号,避免安全风险。
- 如果后续提示找不到
users库,可以登录 MariaDB 后执行CREATE DATABASE IF NOT EXISTS users;创建对应数据库。
内容的提问来源于stack exchange,提问作者Ric
相关产品推荐
相关产品推荐

