Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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;根'@';IP地址';流浪_Php_Mysql_Vagrant_Vagrantfile_Mysql 5.7 - Fatal编程技术网

Php 无法使用';连接MySQL;根'@';IP地址';流浪

Php 无法使用';连接MySQL;根'@';IP地址';流浪,php,mysql,vagrant,vagrantfile,mysql-5.7,Php,Mysql,Vagrant,Vagrantfile,Mysql 5.7,我正在尝试使用Vagrant-VM连接MySQL。 我可以使用root@localhost在vagrant ssh中,但当我使用root@192.168.33.10这是用于Vagrant VM的IP,我获得了访问被拒绝错误 这是我的流浪文件设置: # Create a forwarded port mapping which allows access to a specific port # within the machine from a port on the host mach

我正在尝试使用
Vagrant-VM
连接
MySQL
。 我可以使用
root@localhost
在vagrant ssh中,但当我使用
root@192.168.33.10
这是用于Vagrant VM的IP,我获得了
访问被拒绝
错误

这是我的流浪文件设置:

  # Create a forwarded port mapping which allows access to a specific port
  # within the machine from a port on the host machine. In the example below,
  # accessing "localhost:8080" will access port 80 on the guest machine.

   config.vm.network "forwarded_port", guest: 80, host: 8080
   config.vm.network "forwarded_port", guest: 3306, host: 3306

  # Create a private network, which allows host-only access to the machine
  # using a specific IP.

   config.vm.network "private_network", ip: "192.168.33.10"
root@192.168.33.10已在mySQL中添加,并且已授予权限

mysql> select User,Host from mysql.user;
+-----------+---------------+
| User      | Host          |
+-----------+---------------+
| root      | 192.168.33.10 |
| mysql.sys | localhost     |
| root      | localhost     |
+-----------+---------------+
3 rows in set (0.00 sec)
MySQL 5.7 mysqld.cnf

I have tried bind-address to '0.0.0.0' and bind-address '192.168.33.10'.
vagrant@vagrant-ubuntu-trusty:/etc/mysql/mysql.conf.d$ mysql -u root@192.168.33.10 -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root@192.168.33.10'@'localhost' (using password: YES)
仍然错误消息显示:

I have tried bind-address to '0.0.0.0' and bind-address '192.168.33.10'.
vagrant@vagrant-ubuntu-trusty:/etc/mysql/mysql.conf.d$ mysql -u root@192.168.33.10 -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root@192.168.33.10'@'localhost' (using password: YES)
正确的命令是

mysql -u root -h 192.168.33.10 -p
正确的命令是

mysql -u root -h 192.168.33.10 -p

仔细查看错误消息。错误消息指示提供给MySQL服务器的用户名为:

 'user@192.168.33.10'
MySQL查看连接的主机是:

 'localhost'
以下是MySQL客户端如何解释这些选项:

 mysql -u root@192.168.33.10 -p
-u user
提供一个字符串值,在本例中,它看到的是
'root@192.168.33.10“
作为用户名值。
@
符号以及数字和点只是用户名字符串的一部分。这些字符没有特殊意义,它只是一个字符串。MySQL服务器将在
MySQL.users
表中查找具有与该字符串匹配的
User
值的行。(

为了找到匹配,MySQL还将查看
Host
列中的值。该值必须与连接被视为来自的主机相匹配。这意味着
'root'@'localhost'
是与
'root'@'192.168.33.10'
不同的用户

-p
提示输入密码

省略了协议要使用的任何命令选项、要连接的主机、端口号等。当我们不提供这些选项时,MySQL默认为

-h localhost
好像这就是我们所说的


如果希望通过TCP/IP协议连接到MySQL服务器,而不使用Unix套接字,则需要指定
-h hostname
-h ipaddress
,或指定
--protocol=TCP

主机名“
localhost
:在MySQL中具有特殊意义。这是通过Unix套接字的连接,而不是通过我们可能期望的环回IP地址


例如,要连接到本地计算机上的MySQL服务器,使用环回IP地址在默认端口3306上侦听:

  mysql -h 127.0.0.1 -u root -p
MySQL参考手册中对这些信息进行了详细介绍

此外,默认情况下,MySQL使用反向DNS查找将IP地址解析为主机名

如果我们想在mysql.users表的
Host
列中使用IP地址,我们需要禁用反向DNS查找。我们通过包括以下选项来实现:

skip_name_resolve

my.cnf
配置文件中。

仔细查看错误消息。错误消息表明提供给MySQL服务器的用户名是:

 'user@192.168.33.10'
MySQL查看连接的主机是:

 'localhost'
以下是MySQL客户端如何解释这些选项:

 mysql -u root@192.168.33.10 -p
-u user
提供一个字符串值,在本例中,它看到的是
'root@192.168.33.10“
作为用户名值。
@
符号以及数字和点只是用户名字符串的一部分。这些字符没有特殊意义,只是一个字符串。MySQL服务器将在
mysql.users
表,该表具有与该字符串匹配的
User
值(

为了找到匹配,MySQL还将查看
Host
列中的值。该值必须与连接被视为来自的主机相匹配。这意味着
'root'@'localhost'
是与
'root'@'192.168.33.10'
不同的用户

-p
提示输入密码

省略了协议要使用的任何命令选项、要连接的主机、端口号等。当我们不提供这些选项时,MySQL默认为

-h localhost
好像这就是我们所说的


如果希望通过TCP/IP协议连接到MySQL服务器,而不使用Unix套接字,则需要指定
-h hostname
-h ipaddress
,或指定
--protocol=TCP

主机名“
localhost
:在MySQL中具有特殊意义。这是通过Unix套接字的连接,而不是通过我们可能期望的环回IP地址


例如,要连接到本地计算机上的MySQL服务器,使用环回IP地址在默认端口3306上侦听:

  mysql -h 127.0.0.1 -u root -p
MySQL参考手册中对这些信息进行了详细介绍

此外,默认情况下,MySQL使用反向DNS查找将IP地址解析为主机名

如果我们想在mysql.users表的
Host
列中使用IP地址,我们需要禁用反向DNS查找。我们通过包括以下选项来实现:

skip_name_resolve

my.cnf
配置文件中。

我认为您在sql连接不需要密码时设置了密码。我对vagrant不太了解,但您是否试图从VM内部或主机或其他计算机访问mysql?我在本地猜测,因此尝试创建另一个用户并与其连接,而不是从root,或授予root对该IP的访问权限
授予*.to'root'@'192.168.33.10'上的所有权限,该权限由'P4$$WORD'通过Grant选项标识;
我认为您在sql连接不需要密码时设置了密码我对vagrant不太了解,但您是否试图从VM内部或主机或其他c访问mysql计算机?我在本地猜测,所以请尝试创建另一个用户并与其连接,而不是根用户,或者向根用户授予访问此IP的权限
Grant在*.to“root”上的所有权限,通过“P4$$WORD”和Grant选项标识为“192.168.33.10”。