Mysql的Vagrant端口转发

Ale*_*lex 13 mysql portforwarding vagrant vagrantfile

我试图在Vagrantfile中设置端口转发以从主机系统连接到guest mysqld,但是得到reading initial communication packet错误.主持人:Yosemite,嘉宾:Trusty,vagrant 1.7.4

Vagrantfile(主持人):

config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "forwarded_port", guest: 3306, host: 3309
Run Code Online (Sandbox Code Playgroud)

my.ini文件(游客):

bind-address            = 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

8080转发就像一个魅力.

mysql -h127.0.0.1 -uroot -p 来自客人也工作.

mysql -h127.0.0.1 -P 3309 -uroot -p来自主机结果有reading initial communication packet错误.

当我从主机telnet时,连接立即关闭:

$ telnet localhost 3309
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
Run Code Online (Sandbox Code Playgroud)

当我从主机ssh到vagrant box时,端口转发工作:

$ssh vagrant@127.0.0.1 -p 2222 -L3308:localhost:3306 
Run Code Online (Sandbox Code Playgroud)

然后我可以mysql -h127.0.0.1 -P3308 -uroot -p毫无问题地从主机连接,我将其用作临时解决方法.

Fré*_*nri 22

终于能够使它工作 -

编辑/etc/mysql/my.cnf文件并确保

  • 你有 bind-address = 0.0.0.0
  • 或者你评论这条线 #bind-address ...

您可能需要将其添加到my.cnf文件的mysqld部分:

[mysqld]
bind-address = 0.0.0.0
Run Code Online (Sandbox Code Playgroud)

确保在更改后重新启动mysql服务器

$ sudo service mysql restart
Run Code Online (Sandbox Code Playgroud)

然后你可以从你的主机连接 - 所以我首先遇到了错误

$ mysql -h127.0.0.1 -P 3309 -uroot -p
Enter password:
ERROR 1130 (HY000): Host '172.16.42.2' is not allowed to connect to this MySQL server
Run Code Online (Sandbox Code Playgroud)

所以我回到客人那里做了

vagrant@precise64:~$ mysql -h127.0.0.1 -uroot -p
...
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.16.42.2' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

然后我没有从主机连接的问题

$ mysql -h127.0.0.1 -P 3309 -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 36
Server version: 5.5.44-0ubuntu0.12.04.1 (Ubuntu)
Run Code Online (Sandbox Code Playgroud)