【发布时间】:2011-09-08 21:08:32
【问题描述】:
我创建了用户dashboard 并授予它各种权限(例如SHOW DATABASES)。我最初设置了 Host=[web-server 的私有 ip],但不断收到从 php 的mysql_connect 返回的拒绝访问错误,所以我设置了Host=192.168.%,这样我们网络上的任何机器都可以访问它。
我可以使用 MySQLWorkbench 从我的 Mac 成功连接到 Db 服务器上的 mysql Db(并成功运行 SHOW DATABASES;),但是当我尝试通过我们的网络服务器上的 php 连接时,我得到:Access denied for user 'dashboard'@'192.168.xx.xx' (using password: YES)
我在 php 中使用的代码是:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<?php
$dbhost = "192.168.x.x"; // but no x's
$dbuser = "dashboard";
$dbpass = "password"; // i copied&pasted the real password for other successful logins
$dbconnect = mysql_connect($dbhost, $dbuser, $dbpass) or die(mysql_error());
$query = mysql_query('SHOW DATABASES;');
?>
</head>
<body>
<? echo $query ?>
</body>
</html>
半相关说明:我可以以某种方式将$dbpass 设置为等于加密字符串,因此它不会存储为纯文本吗?
EDIT:mysql用户当前是dashboard@192.168.%(不是localhost)
编辑 2:我认为由于 Web 服务器位于 DMZ 中,它可能正在从其公共 IP 与 MySQL 通信,但是当我将 dashboard 的主机更改为那个时,我获取Host '192.168.xx.xx' is not allowed to connect to this MySQL server。所以看来不是这样的……
【问题讨论】:
-
您只为
dashboard@localhost定义了用户访问权限,您还需要授予用户对dashboard@phpcomputer的访问权限,并使用这些凭据登录。 -
嗨@Johan,感谢您的回复,但不,它没有设置为本地主机。我最初创建了用户
dashboard@webserver,现在已将其更改为dashboard@192.168.%.%(这应该允许我们专用网络上的任何机器以该用户身份连接,对吧?)。 -
检查 - 1. mysql 是否监听端口或套接字? 2. 向我们展示此用户的权限 3. 192.168.x.x 是本地网络
-
感谢您的回复@ajreal。我弄清楚发生了什么:stackoverflow.com/questions/7354521/…
-
顺便说一句,你错过了一个开场白
<html>。
标签: php mysql access-denied