XAMPP环境下Laravel应用启动失败,反复出现MariaDB连接错误SQLSTATE[HY000] [1130]
XAMPP环境下Laravel应用启动失败,反复出现MariaDB连接错误SQLSTATE[HY000] [1130]
哥们我太懂这种反复踩坑的烦躁了!这个错误本质是MariaDB的权限配置出了问题,导致你的Laravel应用用的数据库账号没法从localhost连接服务器,而且你说重装能管几个月,大概率是XAMPP的MariaDB在某些更新或者重启后,权限配置被重置或者出现了异常。咱们直接来解决根本问题,别再靠重装治标不治本了:
一、先快速恢复连接,解决当前问题
- 打开XAMPP控制面板,启动MariaDB服务,然后点击旁边的「Shell」按钮打开命令行终端
- 输入命令
mysql -u root -p,回车后输入你的MariaDB root密码(如果没设置过直接按回车即可) - 进入数据库控制台后,执行下面的SQL语句,给你的数据库账号授权从localhost连接的权限:
-- 如果用的是root账号,把密码改成你的root密码 GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '你的数据库密码' WITH GRANT OPTION; -- 如果Laravel用的是专门的数据库账号(比如laravel_user),替换成对应的账号和密码 GRANT ALL PRIVILEGES ON *.* TO 'laravel_user'@'localhost' IDENTIFIED BY '你的账号密码' WITH GRANT OPTION; - 执行完授权后,一定要刷新权限让配置生效:
FLUSH PRIVILEGES; - 输入
EXIT;退出数据库控制台,然后重启XAMPP的MariaDB和Apache服务,这时候再启动Laravel应该就能正常连接了。
二、彻底解决反复出现的问题
1. 不要用root账号连接Laravel,创建专用数据库账号
专门的账号权限更精准,不容易被系统配置变动影响:
- 还是在MariaDB的Shell终端里,先创建专用账号:
CREATE USER 'laravel_app'@'localhost' IDENTIFIED BY '你的安全密码'; - 给这个账号授予你Laravel项目数据库的全部权限(把
your_laravel_db换成你实际的数据库名):GRANT ALL PRIVILEGES ON your_laravel_db.* TO 'laravel_app'@'localhost'; FLUSH PRIVILEGES; - 打开Laravel根目录下的
.env文件,把DB_USERNAME改成这个新账号,DB_PASSWORD对应设置的密码,保存后重启服务即可。
2. 检查MariaDB的绑定地址配置
有时候XAMPP的配置变动会导致MariaDB只监听特定IP,拒绝localhost连接:
- 找到XAMPP的MariaDB配置文件:Windows系统一般是
XAMPP安装目录\mysql\my.ini,Linux系统是/opt/lampp/etc/my.cnf - 打开文件后搜索
bind-address,确保它的值是127.0.0.1或者localhost,如果这行被注释掉了也没关系,默认就是允许本地连接的。如果是其他IP,改成127.0.0.1后保存,重启MariaDB服务。
3. 关闭XAMPP自动更新(可选)
部分情况下XAMPP的自动更新会重置MariaDB的权限配置,你可以在XAMPP控制面板里找到更新相关的选项,把自动更新关掉,后续手动更新时留意数据库配置是否被改动。
三、排查小技巧
下次再出现这个错误,先别急着重装,先检查Laravel根目录的 .env 文件,确认 DB_HOST、DB_USERNAME、DB_PASSWORD 这些参数有没有被误改,很多时候都是配置文件的小失误导致的。
备注:内容来源于stack exchange,提问作者Semche
相关产品推荐
相关产品推荐

