我创建了用户dashboard
并为其授予了各种权限(例如SHOW DATABASES
)。我最初设置了Host = [web-server的私有ip],但是从php mysql_connect
返回的访问被拒绝错误,所以我设置Host=192.168.%
所以我们网络上的任何机器都可以访问它。
我可以使用MySQLWorkbench成功连接到我的Mac上的Db服务器上的mysql Db(并成功运行SHOW DATABASES;
),但是当我尝试通过我们的网络服务器上的php连接时,我得到:{{ 1}}
我在php中使用的代码是:
Access denied for user 'dashboard'@'192.168.xx.xx' (using password: YES)
半相关说明:我可以以某种方式将<!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>
设置为等于加密字符串,这样它就不会存储为纯文本吗?
编辑:mysql用户当前是$dbpass
(不是localhost)
编辑2 :我认为既然Web服务器在DMZ中,它可能正在通过它的公共IP与MySQL通信,但是当我将dashboard@192.168.%
的主机更改为,我得到dashboard
。所以似乎情况并非如此......
答案 0 :(得分:2)
密码包含保留字符,因此在PHP中需要用单引号括起来而不是双引号。
答案 1 :(得分:0)
GRANT ALL PRIVILEGES ON mydb.* TO 'username'@'%'
或者只是一样,但@'localhost'?