我有一个简单的迷途多机配置:
Vagrant.configure(2) do |config|
config.vm.box = "bento/ubuntu-16.04"
config.vm.provision :shell, path: "vagrant/ubuntu-16.04/provision.sh"
config.vm.synced_folder "ed", "/var/www/html"
config.vm.provider "virtualbox" do |v|
v.memory = 1024
v.cpus = 2
end
config.vm.define "node1", primary: true do |node|
node.vm.hostname = 'node1'
node.vm.network :private_network, ip: "192.168.56.101"
node.vm.network :forwarded_port, guest: 22, host: 10122, id: "ssh"
node.vm.provision :hosts, :sync_hosts => true
end
config.vm.define "node2" do |node|
node.vm.hostname = "node2"
node.vm.network :private_network, ip: "192.168.56.102"
node.vm.network :forwarded_port, guest: 22, host: 10123, id: "ssh"
node.vm.provision :hosts, :sync_hosts => true
end
end在node1上我有php,在node2上我有mysql。
当我从mysql -uuser -ppass -P3306 -hlocalhost运行vagrant@node2时,
但是,当我尝试从mysql -uuser -ppass -P3306 -h192.168.56.102运行vagrant@node1时,它将无法工作,我会得到错误:
错误2003 (HY000):无法连接到'192.168.56.102‘(111)上的MySQL服务器
我可以从node1中选择node2,反之亦然。
发布于 2017-02-24 13:51:53
在mysql中,默认禁用远程用户登录。它只允许本地主机出于安全原因。。
为了进行交叉验证,登录到mysql并运行命令:
mysql> select user,host from mysql.user;
+------+--------------------------------+
| user | host |
+------+--------------------------------+
| root | localhost |
| root | ::1 |
+------+--------------------------------+
2 rows in set (0.00 sec)如果它只给localhost。这意味着您只允许从localhost和用户以root身份登录(在本例中)。
如果您希望允许从远程系统登录,则必须添加以下内容:
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;此命令将允许从所有远程IP登录,并允许访问所有数据库的用户名user。
如果希望允许从特定IP地址访问并且只允许访问特定的数据库,则可以运行以下方式:
GRANT ALL PRIVILEGES ON databasename.* TO 'user'@'ipaddress' IDENTIFIED BY 'password' WITH GRANT OPTION;注:不要忘记在/etc/mysql/my.cnf中更改bind-address。
打开文件/etc/mysql/my.cnf并将bind-address从127.0.0.1更改为0.0.0.0或注释掉bind-address并重新启动mysql服务。
发布于 2017-02-23 17:51:05
如果防火墙阻塞了MySQL端口(默认为3306),就会发生这种情况。
另一个可能的原因是bind_address配置文件中的MySQL设置。默认情况下,这将设置为127.0.0.1。将其设置为0.0.0.0以启用所有IP地址的MySQL。
https://stackoverflow.com/questions/42422715
复制相似问题