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

DigitalOcean Droplet部署MariaDB10.2后Yii2数据库连接权限拒绝问题

解决Yii2连接MariaDB 10.2出现1045权限错误的方案

我之前在DigitalOcean Droplet上部署Yii2+MariaDB时也碰到过几乎一模一样的问题,给你几个实用的排查和解决方向:

  • 先确认Yii2配置的完整性
    你贴的配置片段里'usernam...'明显没写完,首先要确保数据库配置里的username字段是完整的'test',password也和你创建test用户时设置的完全一致——别小看拼写错误或者多余的空格,这是最容易踩的坑。完整的配置应该类似:

    return [
        'class' => 'yii\db\Connection',
        'dsn' => 'mysql:host=localhost;dbname=test',
        'username' => 'test',
        'password' => '你的test用户密码',
        'charset' => 'utf8',
    ];
    
  • 检查MariaDB用户的认证插件
    MariaDB 10.2及以上版本,默认可能给localhost用户启用了unix_socket认证插件——这种情况下,你通过控制台登录时用的是Unix socket认证(不需要密码或者自动匹配系统用户),但Yii2应用用的是密码认证,就会触发1045错误。
    登录MariaDB控制台执行以下命令查看插件:

    SELECT user, host, plugin FROM mysql.user WHERE user = 'test';
    

    如果返回的plugin是unix_socket,就把它改成mysql_native_password:

    ALTER USER 'test'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的test用户密码';
    FLUSH PRIVILEGES;
    

    之后重启MariaDB服务:sudo systemctl restart mariadb,再测试Yii2的连接。

  • 调整Yii2的DSN连接方式
    在MySQL/MariaDB里,localhost会优先走Unix socket连接,而127.0.0.1会强制用TCP/IP连接,两者的认证规则可能不一样。你可以试试两种修改方式:

    1. 强制用TCP/IP连接,把DSN里的localhost改成127.0.0.1:
      'dsn' => 'mysql:host=127.0.0.1;dbname=test',
      
    2. 直接指定Unix socket路径(路径可能因系统不同而异,比如/var/run/mysqld/mysqld.sock或者/var/lib/mysql/mysql.sock):
      'dsn' => 'mysql:unix_socket=/var/run/mysqld/mysqld.sock;dbname=test',
      
  • 重新确认用户权限
    虽然你说已经授予了test数据库的访问权限,但还是建议再验证一下权限是否生效:
    登录MariaDB控制台执行:

    SHOW GRANTS FOR 'test'@'localhost';
    

    确保输出里包含GRANT ALL PRIVILEGES ON test.* TO 'test'@'localhost'(或者你需要的具体权限)。如果没有,重新执行授权命令:

    GRANT ALL PRIVILEGES ON test.* TO 'test'@'localhost' IDENTIFIED BY '你的test用户密码';
    FLUSH PRIVILEGES;
    
  • 临时排查SELinux或防火墙干扰
    如果以上方法都不行,可以临时关闭SELinux测试(仅用于排查):

    sudo setenforce 0
    

    如果关闭后能正常连接,再调整SELinux规则允许Yii2访问数据库;DigitalOcean Droplet默认的UFW防火墙一般不会拦截localhost的连接,但也可以检查一下UFW状态:sudo ufw status,确保3306端口的本地连接是允许的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:40:41