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

WSL2 Ubuntu20.04环境下Laravel连接MariaDB报1698权限错误求助

解决Laravel部署中MariaDB root@localhost权限拒绝问题

这个问题我碰到过好多次了,根源其实是Ubuntu 20.04自带的MariaDB默认给root用户用了unix_socket认证方式,而不是密码认证——哪怕你输对密码,Laravel也没法用密码方式连接上root用户。结合你的进程信息,mysqld确实在正常运行,所以核心问题就是认证方式的配置。

下面是一步步的解决步骤:

1. 无需密码登录MariaDB

因为root用的是unix_socket认证,直接通过sudo就能登录:

sudo mysql -u root

2. 查看当前root用户的认证方式

在MariaDB命令行里执行:

SELECT user, plugin FROM mysql.user;

你会看到root@localhost对应的plugin列是unix_socket,这就是问题所在。

3. 修改root用户为密码认证

执行以下SQL语句替换成你的密码(把your_secure_password改成你之前用的密码):

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_secure_password';
FLUSH PRIVILEGES;

执行完后退出MariaDB:exit;

4. 测试密码登录

现在用密码登录试试,确认生效:

mysql -u root -p

输入密码后能正常进入就说明认证方式改好了。

5. 检查Laravel的.env配置

确保你的.env文件里的数据库配置正确,特别注意DB_HOST用127.0.0.1而不是localhost(避免优先使用socket连接):

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=dev_database
DB_USERNAME=root
DB_PASSWORD=your_secure_password

另外别忘了确认dev_database这个数据库已经存在,如果没有,在MariaDB里创建:

CREATE DATABASE dev_database;

6. (可选)修复Laravel文件夹权限

既然你怀疑文件夹权限问题,Laravel的storage和bootstrap/cache目录需要web服务器用户(www-data)有读写权限:

sudo chown -R www-data:www-data storage bootstrap/cache
sudo chmod -R 775 storage bootstrap/cache

做完这些步骤后,再运行php artisan install应该就能正常连接数据库了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 22:47:44