2016-08-29 2 views
-2

Ich muss eine Verbindung zu einem Remote-MySQL-Server mit einer PHP-Seite;
die Verbindung selbst arbeitet als Charme, aber der Moment, ich versuche, die Datenbank zu erstellen, da es noch nicht existiert, bekomme ich diesen Fehler:PDO Zugriff verweigert für Benutzer 'Benutzername' @ '%'

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

Wie Sie sehen können, habe ich Zugriff verweigert " % ".
Jetzt: was ist "%"?

Außerdem:

Hauptdatei

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 ist eine Instanz eines korrekt initialisiert PDO-Wrapper

PDO-Wrapper-Datei

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; 
    } 
} 

diese $ -> db ist ein korrekt instanziiertes, voll verbundenes PDO-Objekt; Diese
sind die Linien verwendet, um eine Verbindung

$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); 

Ich habe vollen Zugriff auf den MySQL-Server

+0

Root-Rechte für den Mysql-Benutzer wird nicht gewährt. Deshalb gibt SQL Server diesen Fehler zurück. –

+0

Ich habe sie, da, wenn ich manuell mit dem Server mit meinen Login-Daten verbinden Ich kann Datenbanken erstellen/bearbeiten/ohne Probleme – Vkfan

+1

Werfen Sie einen Blick [hier] (http://stackoverflow.com/questions/6239131/how -zu-gewähren-remote-access-permissions-to-mysql-server-for-user) –

Antwort

2

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

MySQL Berechtigungen sind granular: nicht alle Benutzer haben Zugriff auf alle Datenbanken auf dem Server.

Sie müssen sich mit einem Administrator und grant the appropriate permissions anmelden. So gewähren vollen Zugang:

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

... oder Sie können nach Ihren Wünschen selektiver sein:

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

Bitte überprüfen Privileges Supported by MySQL für eine vollständige Liste.

% ist ein Wildcard ausführlich unter Account Names and Passwords erklärt, die "Verbindung von jedem Host" bedeutet.

Verwandte Themen