mysql - Laravel Homestead 无法从主机连接到 MySQL

标签 mysql laravel vagrant mysql-workbench homestead

自从我安装了 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 失败尝试的屏幕截图(点击放大):

enter image description here enter image description here


因为它非常重要,这里是我的 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/

相关文章:

mysql - mysql上运行sql慢

php - Laravel Query Builder 其间

javascript - Dropzone.js 显示存储的图像

Laravel Homestead vagrant up 超时

ssh - 将 Docker 安装到 Vagrant VM 失败

mysql - 简单的MySql加入Laravel eloquent

java - Tomcat 和数据库引用

mysql - 多个表的共享主键

php - 在 Laravel 中使用通配符删除文件

ruby - 在 osx 10.7 上运行 Vagrant/Puppet 的问题