用户 'username'@'%' 的 PDO 访问被拒绝

JVa*_*ker 0 php mysql pdo

我需要使用 php 页面连接到远程 mysql 服务器;
连接本身很有魅力,但是当我尝试创建数据库时,因为它尚不存在,我收到此错误:

带有消息“SQLSTATE[42000]”的异常“PDOException”:语法错误或访问冲突:1044 用户“[myusername]”@“%”对 [myurl]/php/db_manager.php 中的数据库“[mydbname]”的访问被拒绝: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;
}
Run Code Online (Sandbox Code Playgroud)

$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;
    }
}
Run Code Online (Sandbox Code Playgroud)

$this->db 是一个正确实例化的、完全连接的 PDO 对象;
这些是用于连接的线

$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);
Run Code Online (Sandbox Code Playgroud)

我对 Mysql 服务器有完全访问权限

Álv*_*lez 5

用户 '[myusername]'@'%'对数据库 '[mydbname]' 的访问被拒绝

MySQL 权限是细粒度的:并非所有用户都可以完全访问服务器上的所有数据库。

您需要以管理员身份登录并授予适当的权限。例如,授予完全访问权限

GRANT ALL
ON mydbname.*
TO 'myusername'@'%'
WITH GRANT OPTION;
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

...或者您可以根据自己的喜好更有选择性:

GRANT SELECT, ALTER, CREATE, DELETE, DROP, INDEX, INSERT, REFERENCES, TRIGGER, UPDATE
ON mydbname.*
TO 'myusername'@'%';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

请查看MySQL 支持的权限以获取完整列表。

%帐户名和密码中详细解释的通配符,表示“来自任何主机的连接”。