自从我安装了 Laravel Homestead(通过 Vagrant)后,我无法从我的主机 机器 (Windows) 连接到 MySql。但是,我可以毫无问题地从 VM 本身连接到 MySql 服务器(即从 homestead 虚拟机)。
我将解释我在尝试解决此问题时采取的步骤,并将粘贴我的部分配置文件,希望您能理解。
当尝试从远程(即我的主机)连接时,我在 MySQL Workbench 和 MySQL 客户端上收到以下错误消息:
Lost connection to MySQL server at 'reading authorization packet', system error: 2
我在网上翻了一个星期,没找到能解决我问题的东西。以下是我尝试过的一些方法:
在我的 windows 机器上:
- Windows 防火墙:
- 允许在端口 3306 和 33060 上进出 Workbench 的出站和入站流量
- 允许到 33060 的出站流量
在 Vagrant 的 Homestead 机器 (Ubuntu) 上:
将
/etc/hosts.allow
编辑为:mysqld: 127.0.0.1 mysqld: ALL: allow
已验证
/etc/hosts.deny
未阻止任何地址将以下内容添加到
/etc/mysql/mysql.conf.d/mysqld.cnf
和/etc/mysql/my.cnf
[mysqld] skip-name-resolve
还有更多与上述相似和不同的东西。
这就是我尝试从主机连接的方式:
$ mysql -h 127.0.0.1 -P 33060 -u homestead
这些是 MySQL Workbench 失败尝试的屏幕截图(点击放大):
因为它非常重要,这里是我的 Vagrant 和 Homestead 配置文件:
Homestead.yaml
ip: "192.168.10.10"
...
<truncated>
...
databases:
- homestead
项目的.env
文件:
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:<truncated>
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=homestead
DB_PASSWORD=secret
正如我之前所说,我将尝试使用不同的变体和形状来尝试以上所有方法,并且一次又一次地遇到相同的问题。我还尝试使用 127.0.0.1 和 192.168.10.10 进行尝试,认为它可能会有所帮助,但又一次,没有。将感谢您的帮助,并将很乐意添加任何需要的信息
最佳答案
我遇到了同样的问题,但在以与 vagrant 相同的管理员身份运行 mysql 客户端后,它对我有用。第一次尝试以与 vagrant 相同的用户运行它。
关于mysql - Laravel Homestead 无法从主机连接到 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49412619/