Rob*_*sen 6 php mysql database pdo database-permissions
在过去的几个小时里,我一直在用力撞击这堵墙,我的头脑很血腥.:(
正如标题所暗示的,我已经创建了一个可以访问数据库MySQL用户罚款从MySQL命令提示符在数据库服务器上.但是,当我尝试实例化一个新的PDO对象以使用同一个用户访问数据库时,我得到:
SQLSTATE[42000] [1044] Access denied for user 'bob'@'localhost' to database 'my_database'
Run Code Online (Sandbox Code Playgroud)
这是我创建用户的方式:
GRANT SELECT, DELETE, EXECUTE, INSERT, UPDATE ON my_database.* TO 'bob'@'localhost' IDENTIFIED BY 'some_password';
Run Code Online (Sandbox Code Playgroud)
这可能是什么问题?!请有人给我一个骨头!(仅供参考,当我尝试创建一个新的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' |
+------------------------------------------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
以下是这个用户的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
Run Code Online (Sandbox Code Playgroud)
如果重要,这是一个在Ubuntu 12.04 LTS上运行的四节点MySQL集群.
编辑:我发现问题只发生在我尝试使用Zend AMF访问服务器时.任何有关PDO无法与Zend AMF合作的想法?我可能在Zend AMF设置中遗漏了一些东西吗?
请尝试'bob'@'127.0.0.1'.如果php通过127.0.0.1访问它,它将永远不会被称为'localhost',因为本地DNS解析没有发生,MySQL将拒绝访问它.