在过去的几个小时里,我一直用力将它撞在墙上,我的头都在流血。:(
正如标题所示,我创建了一个 MySQL 用户,可以从数据库服务器上的mysql命令提示符访问数据库。但是,当我尝试实例化一个新的 PDO 对象以使用同一用户访问数据库时,我得到:
SQLSTATE[42000] [1044] Access denied for user 'bob'@'localhost' to database 'my_database'
这是我创建用户的方式:
GRANT SELECT, DELETE, EXECUTE, INSERT, UPDATE ON my_database.* TO 'bob'@'localhost' IDENTIFIED BY 'some_password';
这里可能有什么问题?!请有人给我一块骨头!(仅供参考,当我尝试创建一个新的 PDO 对象时会出现问题......我捕获了一个 PDOException ,这就是消息)。
我在授予后执行了 FLUSH PRIVILEGES,这是 SHOW GRANTS 的输出:
mysql> SHOW GRANTS FOR 'bob'@'localhost';
+------------------------------------------------------------------------------------------------------------+
| Grants for bob@localhost |
+------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'bob'@'localhost' IDENTIFIED BY PASSWORD '.........................................' |
| GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON `my_database`.* TO 'bob'@'localhost' |
+------------------------------------------------------------------------------------------------------------+
这是这个用户的 mysql.db 的样子:
mysql> SELECT * FROM db WHERE User = 'bob'\G;
*************************** 1. row ***************************
Host: localhost
Db: my_database
User: bob
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: N
Drop_priv: N
Grant_priv: N
References_priv: N
Index_priv: N
Alter_priv: N
Create_tmp_table_priv: N
Lock_tables_priv: N
Create_view_priv: N
Show_view_priv: N
Create_routine_priv: N
Alter_routine_priv: N
Execute_priv: Y
Event_priv: N
Trigger_priv: N
如果重要的话,这是一个在 Ubuntu 12.04 LTS 上运行的四节点 MySQL 集群。
编辑:我发现只有当我尝试使用 Zend AMF 访问服务器时才会出现问题。任何想法为什么 PDO 不能与 Zend AMF 一起使用?我可能错过了 Zend AMF 设置中的某些内容吗?