Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何允许远程mysql登录?_Php_Mysql_Vagrant - Fatal编程技术网

Php 如何允许远程mysql登录?

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多机配置:

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,如果遇到任何问题,请告诉我。:@弗拉基米尔,如果你遇到任何问题,请告诉我