PDO无法连接,但mysql_connect可以(没有PW)

时间:2012-05-03 07:23:14

标签: php mysql pdo mysql-connect

我在这里真的有一个奇怪的问题,它真的开始烦我了。这是关于连接的不同行为。我只是想设置CakePHP,但PDO无法连接到mysql Server。

Okey,一步一步:它是一台新电脑,我刚刚安装了XAMPP(在Win7上)并下载了CakePHP。没有其他事情做过。在phpMyAdmin上,我使用PW'test'创建了一个用户'test',他拥有数据库'test'。简单,对吧?

这里是phpMysqlAdmin中用户/权限表的行:

User Host Password Global Rights GRANT
test %    Yes      USAGE         No

现在,到真正的问题:

这有效:

$link = mysql_connect('localhost', 'test'); //<- not using the 3. parameter, 'password'

但是,应该做些什么,不要:

$link = mysql_connect('localhost', 'test', 'test'); //<- using the 3. parameter, 'password'

由于我似乎无法“删除”PDO的'使用密码:是',我无法连接PDO(和蛋糕使用PDO):

$dbh = new PDO('mysql:host=localhost;dbname=test', 'test', 'test');

错误讯息:

  

错误!:SQLSTATE [28000] [1045]拒绝用户访问   'test'@'localhost'(使用密码:YES)

它不能太复杂,我只想用正确的凭据连接到新安装的数据库。我究竟做错了什么?我读过许多类似的问题,但没有为我自己的问题找到解决方案。

是的,密码真的是'测试' - 我不知道为什么mysql_connect()whitout PW可以连接 - 是否默认使用用户名作为PW?

这真的不能那么辛苦

感谢您的帮助, 祝你今天愉快。

编辑(回答问题)

这里是DB权限的条目(在user:test中): - 用户似乎拥有DB'test'的所有权利

Database Rights         GRANT 
test     ALL PRIVILEGES Nein

1 个答案:

答案 0 :(得分:3)

GRANT ALL ON test.* TO test@localhost IDENTIFIED BY "test";

在mysql shell上运行上面的查询,一切都应该有效。