2013-10-21 107 views
0

将php更新到13.10后,mysql可以通过任何用户连接,但无法用正确的用户选择数据库并传递。 似乎发送给mysql的用户是空的而不是root。PHP:mysql_connect()返回true但是mysql_select_db()返回false _ Ubuntu更新

$myconn = mysql_connect('localhost' , 'root' , 'pass'); 
$seldb = mysql_select_db('mydb' , $myconn); 
$er = mysql_error(); 

运行后 $ mycon是:"resource id='2' type='mysql link'"

和 mysql_select_db()返回false;

$ ER是:"Access denied for user ''@'localhost' to database 'mydb'"

请帮助我。 对不起,我的英语不好。

+0

是数据库从phpMyAdmin的,或者除了你的应用程序的另一个接口可见? – geomagas

+0

尝试用'127.0.0.1'替换'localhost' – Yang

+0

是的db在phpmyadmin中可见。 –

回答

1

你看的MySQL认为你'',不root,这是related to this warning from the manual

如果你允许匿名用户连接到MySQL服务器时,你也应该授予权限给所有本地用户以USER_NAME @本地主机。否则,当名称用户尝试从本地计算机登录到MySQL服务器时,将使用mysql.user表中localhost的匿名用户帐户(在MySQL安装期间创建)。有关详细信息,请参见第6.2.4节“访问Cotrol,第1阶段:连接验证”。

“Access Cotrol, Stage 1: Connection Verification”状态:

服务器使用的排序与第一

的最特定主机值这意味着,如果你有一个匿名''@localhost用户排序行的规则,但少具体(或稍后排序)[email protected]'%'(或类似的东西)定义永远不会匹配,因为'匿名'规则匹配。仔细查看最后一个链接,以获得更全面的解释。

这意味着什么是您:

我会强烈推荐第二个:你应该有没有一个匿名用户需要

+0

我删除mysql的匿名用户,但现在的PHP无法连接到MySQL与此错误: “访问被拒绝用户'mohammad'@'localhost'(使用密码:否)” mohammad是我的Ubuntu用户,而不是根作为参数mysql_connect函数。 –

+0

因此,您之前使用匿名用户,使用您的管理员帐户来创建该帐户('GRANT ...无论您喜欢的任何特权......在...到mohammad @ localhost'(可能使用'IDENTIFIED BY'密码' '',你可以在'〜/ .my.cnf'中存储它,这样你就不必一直键入它了) – Wrikken

+0

我可以在我的代码中使用root用户吗? –

0

我自己解决这个问题。在php.ini文件中sql.safe _mode已打开。导致mysql_connect()的 始终以匿名Ubuntu用户身份连接。

在php.ini文件: sql.safe_mode =关