我使用Vagrant安装了一台新的VirtualBox机器,并在该VM内部安装了Mysql Server。如何在虚拟机之外连接到该服务器?我已经转发了Vagrantfile的端口3306,但是当我尝试连接到mysql服务器时,它会重新发送错误信息: '阅读初始通信包'
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
答案 0 :(得分:124)
确保MySQL绑定到0.0.0.0而不是127.0.0.1,否则将无法从计算机外部访问
您可以通过编辑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
答案 1 :(得分:48)
使用ssh vagrant@127.0.0.1 -p 2222
(密码流浪汉)
然后:sudo nano /etc/mysql/my.cnf
并使用#
#skip-external-locking
#bind-address
保存它&出口
然后:sudo service mysql restart
然后您可以通过SSH连接到MySQL服务器。
答案 2 :(得分: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)
测试连接。
答案 3 :(得分: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)
答案 4 :(得分:13)
好吧,既然这些回复都没有帮助我,我不得不多看一眼,并在this文章中找到解决方案。
简而言之,答案如下:
使用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从主机Ubuntu机器连接到vagrant的mysql数据库,也可以使用Valentina Studio。
答案 5 :(得分:2)
以下是登录方框后对我有用的步骤:
找到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
更改bind-address的配置文件:
如果存在,请按如下所示更改值。如果它不存在,请将它添加到[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'@'%';
答案 6 :(得分:1)
这对我有用:Connect to MySQL in Vagrant
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