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
相关产品推荐
相关产品推荐

