[英]mysql "access denied for user" (only happens when connecting via php)
I created user dashboard
and granted it various privileges (such as SHOW DATABASES
).我创建了用户dashboard
并授予它各种权限(例如SHOW DATABASES
)。 I initially set the Host=[private ip of web-server], but kept getting access denied errors returned from php's mysql_connect
, so I set Host=192.168.%
so any machine on our network can access it.我最初设置了 Host=[web-server 的私有 ip],但不断收到从 php 的mysql_connect
返回的拒绝访问错误,所以我设置了Host=192.168.%
以便我们网络上的任何机器都可以访问它。
I can successfully connect to the mysql Db on the Db server from my Mac using MySQLWorkbench (and successfully ran SHOW DATABASES;
), but when I just try to connect via php on our webserver, I just get: Access denied for user 'dashboard'@'192.168.xx.xx' (using password: YES)
我可以使用 MySQLWorkbench 从我的 Mac 成功连接到 Db 服务器上的 mysql Db(并成功运行SHOW DATABASES;
),但是当我尝试通过我们的网络服务器上的 php 连接时,我只是得到: Access denied for user 'dashboard'@'192.168.xx.xx' (using password: YES)
the code i'm using in php is:我在 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>
Semi-related note: Can I somehow set $dbpass
equal to an encrypted string so it's not stored a plain-text?半相关说明:我可以以某种方式将$dbpass
设置$dbpass
等于加密字符串,以便它不存储为纯文本吗?
EDIT : the mysql user is currently dashboard@192.168.%
(not localhost)编辑:mysql 用户当前是dashboard@192.168.%
(不是本地主机)
EDIT 2 : I thought since the Web Server is in the DMZ, that it might be communicating with MySQL from it's public IP, but when I change the host of dashboard
to that, I get Host '192.168.xx.xx' is not allowed to connect to this MySQL server
.编辑 2 :我认为由于 Web 服务器在 DMZ 中,它可能正在从它的公共 IP 与 MySQL 通信,但是当我将dashboard
的主机更改为该主机时,我得到Host '192.168.xx.xx' is not allowed to connect to this MySQL server
。 So it seems that is not the case…所以好像不是这样……
密码包含一个保留字符,因此在 PHP 中它需要用单引号而不是双引号括起来。
did you run你跑了吗
GRANT ALL PRIVILEGES ON mydb.* TO 'username'@'%'
or just the same, but @'localhost' ?还是一样,但@'localhost'?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.