无法从PHP连接到MySQL,但是能够从远程机器连接吗?

时间:2014-04-04 18:47:59

标签: php mysql mysqli remote-access privileges

我真的无法弄清楚这一点。在某个用户下,我可以从机器B连接到机器A上的MySQL数据库,但我无法从机器A本地连接或从PHP连接。

为了说明,我在机器A上创建了一个db MYTEST。然后我创建了一个用户MYTEST并授予MYTEST的所有权限:

GRANT ALL PRIVILEGES ON MYTEST.* TO 'MYTEST'@'%' IDENTIFIED BY 'mypass';
FLUSH PRIVILEGES;

我以root身份做了这些,我可以从任何地方连接而没有任何问题。结果: enter image description here

然后,我尝试从另一台机器连接机器B:

ubuntu@ip-*-*-2-153:~$ mysql -u MYTEST -p -h *.*.*.174
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 84
Server version: 5.5.32-0ubuntu7 (Ubuntu)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

这些都很好看。现在我回到机器A并执行此操作:

root@wangboyang:~# mysql -u MYTEST -p
Enter password:
ERROR 1045 (28000): Access denied for user 'MYTEST'@'localhost' (using password:
 YES)
root@wangboyang:~#

而我能够以root身份连接:

root@wangboyang:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.

最终,我需要从PHP连接。它也不起作用:

php > $con = mysqli_connect('128.199.253.174', 'MYTEST', 'mypass');
PHP Warning:  mysqli_connect(): (28000/1045): Access denied for user 'MYTEST'@'w
angboyang.com' (using password: YES) in php shell code on line 1

我必须使用root:

php > $con = mysqli_connect('128.199.253.174', 'root', 'somepasswordhere');
php >
然后我尝试了一些激进的东西。我将所有全局特权授予了MYTEST,但所有结果都保持不变。请有人知道吗?真的很感激。

注意:

  1. 我确定密码正确无误。为了确认这一点,我使用了与root相同的密码,并将哈希值进行了比较。我可以使用root连接。所以密码是正确的。

  2. 两台机器都是Ubuntu 13.10。

  3. 我试图在所有这些步骤之间刷新权限并重新启动mysql服务器,但无济于事。

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题,但我并不理解为什么。

问题似乎是通配符'%'。它应该能够替换来自任何IP域的用户连接。

但是,对于本地主机'的情况,它并不起作用。和' mydomain.com'。我的猜测是'%'仅匹配IP或在doc或配置文件中的某处指定行为。

要解决此问题,请创建用户' MYTEST' @' localhost'和' MYTEST' @' domainname.com'。