2017-02-23 99 views
1

我有簡單的無業遊民多機配置:如何允許遠程mysql登錄?

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[email protected]它的工作原理,
但當我嘗試從[email protected]運行mysql -uuser -ppass -P3306 -h192.168.56.102它不會工作,我得到錯誤:

ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.56.102' (111)

我可以ping節點1,由節點,反之亦然。

回答

3

在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,改變從127.0.0.1bind-address0.0.0.0或註釋掉bind-address並重新啓動mysql服務。

+0

@Vladimir,讓我知道你是否面臨任何問題。 :) –

+0

非常感謝你!有用!!! –

2

如果MySQL端口(默認爲3306)被防火牆阻止,就會發生這種情況。

另一個可能的原因是MySQL配置文件中的bind_address設置。默認設置爲127.0.0.1。將其設置爲0.0.0.0以對所有IP地址啓用MySQL。