Php 如何允许远程mysql登录?
我有简单的vagrant多机配置:Php 如何允许远程mysql登录?,php,mysql,vagrant,Php,Mysql,Vagrant,我有简单的vagrant多机配置: 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|
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服务器
我可以从node2 ping node1,反之亦然。如果MySQL端口默认值为3306被防火墙阻止,则可能发生这种情况
另一个可能的原因是MySQL配置文件中的bind_地址设置。默认设置为127.0.0.1。将其设置为0.0.0.0以对所有IP地址启用MySQL 如果MySQL端口默认值为3306被防火墙阻止,则可能发生这种情况 另一个可能的原因是MySQL配置文件中的bind_地址设置。默认设置为127.0.0.1。将其设置为0.0.0.0以对所有IP地址启用MySQL 在mysql中,默认情况下禁用远程用户登录。出于安全原因,它只允许本地主机 要进行交叉验证,请登录mysql并运行以下命令:
mysql> select user,host from mysql.user;
+------+--------------------------------+
| user | host |
+------+--------------------------------+
| root | localhost |
| root | ::1 |
+------+--------------------------------+
2 rows in set (0.00 sec)
如果它只提供localhost。在本例中,这意味着您只能以root用户身份从localhost登录
如果您希望允许从远程系统登录,则必须添加以下内容:
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
此命令将允许从所有远程IP登录,并允许用户名用户访问所有数据库
如果您希望允许从特定IP地址访问,并且只允许访问特定数据库,则可以如下方式运行:
GRANT ALL PRIVILEGES ON databasename.* TO 'user'@'ipaddress' IDENTIFIED BY 'password' WITH GRANT OPTION;
注意:不要忘记在/etc/mysql/my.cnf中更改绑定地址
打开文件/etc/mysql/my.cnf并将绑定地址从127.0.0.1更改为0.0.0.0,或者注释掉绑定地址并重新启动mysql服务。在mysql中,默认情况下禁用远程用户登录。出于安全原因,它只允许本地主机
要进行交叉验证,请登录mysql并运行以下命令:
mysql> select user,host from mysql.user;
+------+--------------------------------+
| user | host |
+------+--------------------------------+
| root | localhost |
| root | ::1 |
+------+--------------------------------+
2 rows in set (0.00 sec)
如果它只提供localhost。在本例中,这意味着您只能以root用户身份从localhost登录
如果您希望允许从远程系统登录,则必须添加以下内容:
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
此命令将允许从所有远程IP登录,并允许用户名用户访问所有数据库
如果您希望允许从特定IP地址访问,并且只允许访问特定数据库,则可以如下方式运行:
GRANT ALL PRIVILEGES ON databasename.* TO 'user'@'ipaddress' IDENTIFIED BY 'password' WITH GRANT OPTION;
注意:不要忘记在/etc/mysql/my.cnf中更改绑定地址
打开文件/etc/mysql/my.cnf并将绑定地址从127.0.0.1更改为0.0.0.0,或者注释掉绑定地址并重新启动mysql服务。@Vladimir,如果遇到任何问题,请告诉我。:@弗拉基米尔,如果你遇到任何问题,请告诉我