Problem die Verbindung zu postgresql mit pdo auf localhost (08006)
Ich habe ein test server und der installierten PHP 5.4 (zend Server mit Nginx) und auch postgresql 9.1.
Ich versuche eine Verbindung zu der postgresql-Datenbank mit dem folgenden code:
define('DB_TYPE', 'pgsql');
define('DB_HOST', 'localhost');
define('DB_PORT', 5432);
define('DB_NAME', 'rockprofile');
define('DB_USERNAME', 'rockprofile');
define('DB_PASSWORD', 'PASSWORD');
$dsn = DB_TYPE . ':dbname=' . DB_NAME . ';host=' . DB_HOST . ';port=' . DB_PORT;
try {
$db = new PDO($dsn, DB_USERNAME, DB_PASSWORD);
} catch (PDOException $e) {
echo $e->getMessage();
print_r($e->getTrace());
}
Dies ist jedoch generieren die folgenden:
SQLSTATE[08006] [7] FATAL: Ident authentication failed for user "rockprofile"
Array (
[0] => Array (
[file] => /usr/share/nginx/inc/config.php
[line] => 24
[function] => __construct
[class] => PDO
[type] => -> [args] => Array (
[0] => pgsql:dbname=rockprofile;host=localhost;port=5432
[1] => rockprofile
[2] => PASSWORD ) )
[1] => Array ( [file] => /usr/share/nginx/bands/index.php
[line] => 2
[args] => Array (
[0] => /usr/share/nginx/inc/config.php )
[function] => include ) )
Wie Sie sehen können ich bin mit localhost. Ich kenne den dsn richtig ist auch der Benutzername und das Passwort, weil, wenn ich ersetzen Sie localhost durch den lokalen 192 IP funktioniert es. Ich vermute, das ist ein Problem mit der Konfiguration von postgresql und die folgenden ist der aktuelle Inhalt:
local all all peer
host all all 127.0.0.1/32 ident
host all all ::1/128 ident
host all all 192.168.1.0/24 md5
Suche jemand erschien, um dieses Problem beheben, indem ändern ident Vertrauen auf die config oben, aber das hat nicht geholfen in meinem Fall.
Ist es wahrscheinlich etwas einfacher, ich muss hinzufügen, sondern sucht scheinen fruchtlos sein im moment. Kann mir jemand sagen, wie das zu korrigieren.
*-----BEARBEITEN-----*
Als pro Daniel Vérité Antwort um das Problem zu beheben ident geändert werden, um MD5. Ich persönlich hatte dies zu ändern, sowohl für die IPv4-und IPv6-Einträge.
local all all peer
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
host all all 192.168.1.0/24 md5
- ist dieses Windows -, Linux-oder OSX bist du arbeiten? Für windows sollten Sie versuchen, mit
127.0.0.1
- sorry, sollte erwähnt haben. Dies ist eine linux Maschine mit der minimalen Installation von cent os 6.4. Ich habe versucht mit 127.0.0.1 als gut, aber gleiche Problem.
- Diese behoben die Fehler, die ich bekam, haben Sie eine Erklärung dafür, warum "localhost" funktionierte nicht in meinem Fall ?
- Es ist nicht tatsächlich der Verwendung der lokalen Gastgeber, die das Problem verursacht sondern es wurde die Methode zur Authentifizierung. Das Problem wird gelöst, indem die Methode zur Authentifizierung von ident zu md5
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sehen http://www.postgresql.org/docs/9.1/static/auth-methods.html:
Den
ident
Authentifizierung-Methode ist nicht wirklich geeignet für verbindungen von einem web-server, weil der web-Prozesse laufen unter einem Konto, in der Regelwww-data
oder so, die hat keine Beziehung mit der Datenbanken-Konto (rockprofile
in Ihrem Fall).Da möchte man die Authentifizierung per Passwort, ersetzen Sie diese mit
md5
impg_hba.conf
und neu laden oder neu starten, PostgreSQL.Auch Sie können Ihr Kennwort ändern, da es erscheint im Klartext in der Spur, sodass Ihre substitution Aufwand im code.