지난 몇 시간 동안이 벽에 부딪 혔던 것처럼 내 머리가 피가 듭니다. :mysql 커맨드 라인이 작동 할 때 PHP PDO가 "SQLSTATE [42000] [1044] Access denied for user"를 얻는 이유는 무엇입니까?
제목에서 알 수 있듯이 데이터베이스 서버의 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 보조금의 출력입니다 : 여기
mysql> SHOW GRANTS FOR 'bob'@'localhost';
+------------------------------------------------------------------------------------------------------------+
| Grants for [email protected] |
+------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'bob'@'localhost' IDENTIFIED BY PASSWORD '.........................................' |
| GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON `my_database`.* TO 'bob'@'localhost' |
+------------------------------------------------------------------------------------------------------------+
user와 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에서 실행되는 4 노드 MySQL 클러스터입니다.
편집 : Zend AMF를 사용하여 서버에 액세스하려고 할 때만 문제가 발생한다는 것을 발견했습니다. PDO가 Zend AMF와 함께 작동하지 않는 아이디어가 있습니까? 내 젠드 AMF 설정에서 뭔가를 놓친 적이 있습니까?
같은 큰 따옴표이
하지만 같은 작은 따옴표를 사용하여 설정 파일에 당신에게 비밀을 유지해야합니다 당신을 했습니까 'GRANT '를 실행 한 후'FLUSH PRIVILEGES'를 실행 하시겠습니까? –
질문을 편집하여 자세한 정보를 추가하십시오. 주석의 코드를 읽을 수 없습니다. –
아마도'GRANT'는 서버의 권한 캐시를 직접 업데이트하기 때문에'FLUSH PRIVILEGES'는 필요하지 않습니다. mysql. * 테이블을 직접 수정하는 경우에만 필요하다. – lanzz