在php中将我的Ubuntu更新到13.10之后,mysql可以被任何用户连接但是无法选择具有正确用户的数据库并通过。 似乎发送到mysql的用户是空的而不是root。
$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 :(得分:1)
您认为MySQL认为您是''
,而不是root
,即related to this warning from the manual:
如果允许匿名用户连接到MySQL服务器,则还应该将所有本地用户的权限授予user_name @ localhost。否则,当命名用户尝试从本地计算机登录MySQL服务器时,将使用mysql.user表(在MySQL安装期间创建)中localhost的匿名用户帐户。有关详细信息,请参见第6.2.4节“访问Cotrol,第1阶段:连接验证”。
“Access Cotrol, Stage 1: Connection Verification”州:
服务器使用排序规则来排序具有最特定主机值的行
这意味着如果你有一个匿名的''@localhost
用户,但是一个不太具体的(或稍后排序的)root@'%'
(或类似的东西)定义永远不会匹配,因为'anonymous'规则匹配。查看最后一个链接以获得更全面的解释。
这意味着你:
root@localhost
的访问权限。DROP USER ''@'localhost';
(匿名用户)我高度推荐第二个:匿名用户应该不需要。
答案 1 :(得分:0)
我自己解决这个问题。在php.ini文件中,sql.safe _mode已启用。 导致mysql_connect()始终以匿名Ubuntu用户身份连接。
php.ini文件中的: sql.safe_mode =关