PHP警告mysql_get_server_info():拒绝访问用户' www-data' @' localhost

时间:2014-12-29 10:24:26

标签: php mysql

我使用这样的方式打印mysql_get_server_info()

<?php 
   echo 'MySQL Informtion';
   echo mysql_get_server_info();
?>

但得到了

PHP warning mysql_get_server_info(): Access denied for user 'www-data'@'localhost (using password: NO)

作出回应。我正在使用PHP5.6。造成这种情况的原因以及如何解决这个问题。

2 个答案:

答案 0 :(得分:0)

来自documentation

  

link_identifier:MySQL连接。如果链接标识符不是   指定,假设mysql_connect()打开的最后一个链接。如果不   找到这样的链接,它会尝试创建一个好像mysql_connect()   没有参数被召唤。如果没有找到连接或   建立后,将生成E_WARNING级别错误。

要解决此问题,您需要在致电mysql_connect之前运行mysql_get_server_info(使用正确的用户名,密码等)。

答案 1 :(得分:0)

问题是您不能使用应用的默认设置与数据库服务器进行交互。

来自mysql_get_server_info([$link_identifier])的文档:

  

link_identifier:MySQL连接。如果未指定链接标识符,则假定mysql_connect()打开的最后一个链接。 如果没有找到这样的链接,它将尝试创建一个,就好像没有参数调用mysql_connect()一样。如果没有找到或建立连接,则会生成E_WARNING级别错误。

由于您未指定任何连接且可能之前未打开过(至少您的代码未指定),因此使用带有默认参数的mysql_connect自动创建连接。如果SQL安全模式处于活动状态,则用户名是服务器进程的所有者(您无法覆盖),否则,用户名在mysql_default_user中指定,您可以通过指定用户来覆盖该用户名。

要解决此问题,请使用mysql_connect显式打开与服务器的连接,或修改数据库配置,以便可以使用隐式创建的连接。

BTW:不推荐使用PHP的mysql API,而选择mysqliPDO