使用artisan serve无法连接Homestead MySQL的问题求助
解决Artisan Serve连接Homestead数据库被拒绝的问题
这个坑我之前踩过!核心原因是Homestead的MySQL默认只对虚拟机内部开放访问权限,而你用artisan serve是在本地主机(宿主机)上运行的,直接写localhost或127.0.0.1根本找不到虚拟机里的数据库。下面一步步来搞定:
1. 让Homestead的MySQL允许外部访问
先SSH进入Homestead虚拟机:
homestead ssh
然后编辑MySQL配置文件(Ubuntu系统路径通常是这个,其他版本可能略有差异):
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
找到bind-address这一行,把默认的127.0.0.1改成0.0.0.0(允许所有IP访问),或者直接改成你Homestead虚拟机的私有IP(比如常见的192.168.10.10,这个在你的Homestead.yaml配置文件里能找到)。
改完保存退出,重启MySQL服务生效:
sudo systemctl restart mysql
2. 给MySQL用户添加宿主机访问权限
默认的homestead用户可能只有虚拟机内部的访问权限,需要授权允许宿主机连接。在Homestead的MySQL控制台执行:
GRANT ALL PRIVILEGES ON 你的数据库名.* TO 'homestead'@'你的宿主机IP'; FLUSH PRIVILEGES;
如果是本地开发图省事(不建议生产环境这么做),也可以允许所有IP访问:
GRANT ALL PRIVILEGES ON 你的数据库名.* TO 'homestead'@'%'; FLUSH PRIVILEGES;
3. 更新.env配置文件
把.env里的DB_HOST从localhost改成Homestead的私有IP(比如192.168.10.10),其他配置保持不变:
DB_CONNECTION=mysql DB_HOST=192.168.10.10 DB_PORT=3306 DB_DATABASE=你的数据库名 DB_USERNAME=homestead DB_PASSWORD=secret
4. 清除Laravel配置缓存
Laravel会缓存.env的配置,必须执行这个命令让新配置生效:
php artisan config:clear
做完这些步骤,再启动php artisan serve,应该就能正常连接Homestead的数据库了!
内容的提问来源于stack exchange,提问作者Krystus
相关产品推荐
相关产品推荐

