2016-08-29 2 views
-2

PHP 페이지를 사용하여 원격 mysql 서버에 연결해야합니다. "난에 액세스 거부가,사용자 'username'@ '%'에 대한 PDO 액세스가 거부되었습니다.

exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1044 Access denied for user '[myusername]'@'%' to database '[mydbname]'' in [myurl]/php/db_manager.php:76

당신이 볼 수 있듯이 :
연결 자체가 매력으로 작동하지만 순간 내가 아직 존재하지 않기 때문에, 나는이 오류가 데이터베이스를 만들려고 % ".
지금 : "%"는 무엇입니까?

또한 :

private function createDB() { 
if($this->cm->update("CREATE DATABASE IF NOT EXISTS " . $this->dbName . " DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;", array())) { // Error here 
    $this->cm->update("USE " . $this->dbName . ";", array()); 
    return true; 
} 
return false; 
} 

$ this-이> cm가 제대로 초기화 PDO 래퍼의 인스턴스

홈페이지 파일

PDO 래퍼 파일

public function update($query, $values) 
try{ 
     $sql = $this->db->prepare($query); 
     $sql->execute($values); 
     return true; 
    } catch(PDOException $e) { 
     $this->l->error($e); // <- Error here 
     return false; 
    } 
} 

$이 -> db는 올바르게 인스턴스화되고 완전히 연결된 PDO 객체입니다. 모든 사용자는 서버의 모든 데이터베이스에 대한 전체 액세스 권한 :
이 내가

+0

Mysql 사용자의 루트 권한이 부여되지 않았습니다. 그게 왜 SQL 서버 가이 오류를 반환합니다. –

+0

내가 로그인 데이터로 서버에 수동으로 연결하면 어떤 문제도없이 데이터베이스를 만들거나 편집/삭제할 수 있기 때문에 나는 이걸 가지고있다. – Vkfan

+1

[http://stackoverflow.com/questions/6239131/how -to-grant-remote-access-permissions-to-mysql-server-for-user) –

답변

2

Access denied for user '[myusername]'@'%' to database '[mydbname]'

MySQL의 권한을 세분화있는 MySQL 서버에 대한 전체 액세스 권한이

$this->db = new PDO($connection, $this->db_user, $this->db_password, array(PDO::ATTR_PERSISTENT => true)); 
$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

를 연결하는 데 사용되는 선입니다.

관리자와 grant the appropriate permissions에 로그인해야합니다. 예를 들어, 전체 액세스 부여하려면

GRANT ALL 
ON mydbname.* 
TO 'myusername'@'%' 
WITH GRANT OPTION; 
FLUSH PRIVILEGES; 

을 ... 또는 당신이 원하는대로 더 선택 될 수 있습니다

GRANT SELECT, ALTER, CREATE, DELETE, DROP, INDEX, INSERT, REFERENCES, TRIGGER, UPDATE 
ON mydbname.* 
TO 'myusername'@'%'; 
FLUSH PRIVILEGES; 

전체 목록 Privileges Supported by MySQL을 확인하시기 바랍니다.

%은 "모든 호스트에서 연결"을 의미하는 Account Names and Passwords에 자세하게 설명 된 와일드 카드입니다.

관련 문제