94

我用 Vagrant 安装了一个新的 VirtualBox 机器,并在该 VM 中安装了 Mysql Server。如何连接到 vm 外的该服务器?我已经转发了 Vagrantfile 的 3306 端口,但是当我尝试连接到 mysql 服务器时,它会回复错误:'reading initial communication packet'

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
4

7 回答 7

128

确保 MySQL 绑定到 0.0.0.0 而不是 127.0.0.1 否则将无法从机器外部访问

您可以通过编辑/etc/mysql/my.conf文件并查找bind-address项目来确保这一点——您希望它看起来像bind-address = 0.0.0.0. 然后保存并重新启动 MySQL:

sudo service mysql restart

如果您在生产服务器上执行此操作,则需要了解安全隐患,此处讨论:https ://serverfault.com/questions/257513/how-bad-is-setting-mysqls-bind-address-to -0-0-0-0

于 2012-05-29T07:04:17.347 回答
49

ssh vagrant@127.0.0.1 -p 2222使用(密码 vagrant)登录您的邮箱

然后:sudo nano /etc/mysql/my.cnf并用 # 注释掉以下行

#skip-external-locking 
#bind-address

保存并退出

然后:sudo service mysql restart

然后您可以通过 SSH 连接到您的 MySQL 服务器。

于 2012-09-06T12:33:07.323 回答
18

我最近遇到了这个问题。我使用 PuPHPet 生成配置。

要通过 SSH 连接到 MySQL,“vagrant”密码对我不起作用,我必须通过 SSH 密钥文件进行身份验证。

连接 MySQL Workbench

连接方式

基于 SSH 的标准 TCP/IP

SSH

Hostname: 127.0.0.1:2222 (forwarded SSH port)
Username: vagrant
Password: (do not use)
SSH Key File: C:\vagrantpath\puphpet\files\dot\ssh\insecure_private_key
              (Locate your insercure_private_key)

MySQL

Server Port: 3306
username: (root, or username)
password: (password)

测试连接。

于 2014-08-17T23:18:18.697 回答
17

对于尝试使用 mysql workbench 或 sequel pro 执行此操作的任何人,这些是输入:

Mysql Host: 192.168.56.101 (or ip that you choose for it)
username: root (or mysql username u created)
password: **** (your mysql password)
database: optional
port: optional (unless you chose another port, defaults to 3306)

ssh host: 192.168.56.101 (or ip that you choose for this vm, like above)
ssh user: vagrant (vagrants default username)
ssh password: vagrant (vagrants default password)
ssh port: optional (unless you chose another)

来源:https ://coderwall.com/p/yzwqvg

于 2013-11-15T00:48:38.700 回答
13

好吧,由于给定的答复都没有帮助我,因此我不得不多看一些,并在本文中找到了解决方案

简而言之,答案如下:

使用 MySQL Workbench 连接到 MySQL

Connection Method: Standard TCP/IP over SSH
SSH Hostname: <Local VM IP Address (set in PuPHPet)>
SSH Username: vagrant (the default username)
SSH Password: vagrant (the default password)
MySQL Hostname: 127.0.0.1
MySQL Server Port: 3306
Username: root
Password: <MySQL Root Password (set in PuPHPet)>

使用给定的方法,我能够使用 MySQL Workbench 和 Valentina Studio 从主机 Ubuntu 机器连接到 vagrant 中的 mysql 数据库。

于 2015-04-13T11:56:29.293 回答
3

以下是登录该框后对我有用的步骤:

找到 MySQL 配置文件:

$ mysql --help | grep -A 1 "Default options"

Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf

在 Ubuntu 16 上,路径通常是/etc/mysql/mysql.conf.d/mysqld.cnf

更改绑定地址的配置文件:

如果存在,请按如下方式更改值。如果它不存在,请将其添加到 [mysqld] 部分的任何位置。

bind-address = 0.0.0.0

保存对配置文件的更改并重新启动 MySQL 服务。

service mysql restart

创建/授予对数据库用户的访问权限:

以 root 用户身份连接到 MySQL 数据库并运行以下 SQL 命令:

mysql> CREATE USER 'username'@'%' IDENTIFIED BY 'password';

mysql> GRANT ALL PRIVILEGES ON mydb.* TO 'username'@'%';
于 2018-04-04T17:23:40.597 回答
1

这对我有用:在 Vagrant 中连接到 MySQL

username: vagrant password: vagrant

sudo apt-get update sudo apt-get install build-essential zlib1g-dev
git-core sqlite3 libsqlite3-dev sudo aptitude install mysql-server
mysql-client


sudo nano /etc/mysql/my.cnf change: bind-address            = 0.0.0.0


mysql -u root -p

use mysql GRANT ALL ON *.* to root@'33.33.33.1' IDENTIFIED BY
'jarvis'; FLUSH PRIVILEGES; exit


sudo /etc/init.d/mysql restart




# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant::Config.run do |config|

  config.vm.box = "lucid32"

  config.vm.box_url = "http://files.vagrantup.com/lucid32.box"

  #config.vm.boot_mode = :gui

  # Assign this VM to a host-only network IP, allowing you to access
it   # via the IP. Host-only networks can talk to the host machine as
well as   # any other machines on the same network, but cannot be
accessed (through this   # network interface) by any external
networks.   # config.vm.network :hostonly, "192.168.33.10"

  # Assign this VM to a bridged network, allowing you to connect
directly to a   # network using the host's network device. This makes
the VM appear as another   # physical device on your network.   #
config.vm.network :bridged

  # Forward a port from the guest to the host, which allows for
outside   # computers to access the VM, whereas host only networking
does not.   # config.vm.forward_port 80, 8080

  config.vm.forward_port 3306, 3306

  config.vm.network :hostonly, "33.33.33.10"


end
于 2015-07-26T15:02:32.023 回答