PostgreSQL/localhostを指定すると接続できない場合の対処方法
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
#navi(../)
* host=localhost, psql -h localhostを指定すると接続できな...
この問題を発見したのは、CakePHPをインストールしdatabase.p...
PHPのpg_connect()関数でhost=localhostを指定した時と、psql...
localhostを指定したとき、''Ident認証に失敗しました''が出...
&color(red){今回は、pg_hba.confの修正で直りましたが、各自...
''追記''~
以下の設定を行ってもlocalhostを指定すると接続できない場合...
IPv6によるlocalhostへの接続および、IPv4によるlocalhost接...
-[[PostgreSQLでIPv6のリッスンを無効にしたい場合の対処>Pos...
#htmlinsertpcsp(db-top.html,db-sp.html)
#contents
* 関連記事 [#deeeda66]
-[[PostgreSQLでIPv6のリッスンを無効にしたい場合の対処>Pos...
* 環境説明&構築 [#hbab27f2]
環境はCentOS、yumコマンドによりPostgreSQL8.4をインストー...
yumにてインストール後、PostgreSQLの設定ファイルは変更して...
SELinux, iptables, ip6tablesは動作していません。~
以下の手順によりデータベースユーザを作成してデータベース...
** データベースユーザの追加 [#n99e0ad1]
+ スーパーユーザにsu
$ su -
パスワード:
#br
+ postgresユーザにsu
# su - postgres
#br
+ 今回利用したユーザsakuraをデータベースユーザとして作成
-bash-3.2$ createuser sakura
新しいロールをスーパーユーザとしますか? (y/n)y
-bash-3.2$ exit
logout
#br
** データベースの作成 [#t5c1204c]
sakuraユーザにてデータベースfooを作成しpsqlによる接続確認...
[sakura@centos ~]$ createdb foo
[sakura@centos ~]$ psql foo
psql (8.4.9)
"help" でヘルプを表示します.
foo=# \q
* PHPのpg_connect()関数による接続 [#a7ab14cd]
PHPのデータベース接続関数 ''pg_connect()'' の引数にhost=l...
以下のPHPスクリプトで接続しようとするとエラーとなりPostgr...
[sakura@centos ~]$ cat pg_connect_ng.php
<?php
if (!($cn = pg_connect("host=localhost dbname=foo user...
echo "connect error\n";
} else {
echo "connect ok\n";
}
?>
[sakura@centos ~]$ php pg_connect_ng.php
PHP Warning: pg_connect(): Unable to connect to Postgre...
FATAL: ユーザ"sakura"のIdent認証に失敗しました in /home...
Warning: pg_connect(): Unable to connect to PostgreSQL s...
FATAL: ユーザ"sakura"のIdent認証に失敗しました in /home...
connect error
以下の''host=localhost''を削除したPHPスクリプトはPostgreS...
[sakura@centos ~]$ cat pg_connect_ok.php
<?php
if (!($cn = pg_connect("dbname=foo user=sakura passwor...
echo "connect error\n";
} else {
echo "connect ok\n";
}
?>
[sakura@centos ~]$ php pg_connect_ok.php
connect ok
* psql -h localhost foo で接続してもエラー [#ocd9e3a0]
psql fooでは正常に接続できていたのが、-h localhostを指定...
[sakura@centos ~]$ psql -h localhost foo
psql: FATAL: ユーザ"sakura"のIdent認証に失敗しました
* pg_hba.confを修正しlocalhost指定の接続を可能にする [#bc...
以下の編集および操作は全てrootユーザにて行いました。
/var/lib/pgsql/data/pg_hba.confファイルののIPv4 local con...
-修正前
# IPv4 local connections:
host all all 127.0.0.1/32 id...
- 修正後
# IPv4 local connections:
host all all 127.0.0.1/32 tr...
''ident'' を ''trust''に変更しました。~
上記の設定をtrustに変更すると、localhostからの接続は''ユ...
つまり、localhostからの接続はパスワードなしで接続できるよ...
※trustを設定したので、以下のPHPスクリプトのpasswordは不要...
以下のようにすればパスワードが必要になります。
# IPv4 local connections:
host all all 127.0.0.1/32 pas...
以下のコマンドでPostgreSQLを再起動します。
/etc/init.d/postgresql restart
または
service postgresql restart
sakuraユーザにsuし、以下のコマンドおよびPHPスクリプトを実...
- psqlコマンド
$ psql -h localhost foo
psql (8.4.9)
"help" でヘルプを表示します.
foo=# \q
- phpスクリプト
[sakura@centos ~]$ cat pg_connect_ng.php
<?php
if (!($cn = pg_connect("host=localhost dbname=foo user...
echo "connect error\n";
} else {
echo "connect ok\n";
}
?>
[sakura@centos ~]$ php pg_connect_ng.php
connect ok
localhostを指定して接続できるようになりました。
* 調査結果のまとめ [#d9541e9f]
- pg_hba.confのローカル接続の設定がデフォルトのまま(ident...
- pg_hba.confのローカル接続の設定をtrust(ロカールからの無...
* 備考 [#g3a9c8b6]
本資料は、CakePHPをインストールしdatabase.phpのhostにloca...
他のPHPフレームワークや独自で作成した場合も同様のエラーが...
現に、psql -h localhost データベース名 や pg_connect("hos...
同じ原因で本資料が問題の突破口になれば幸いです。~
Webアプリケーション屋さんがデータベースの設定に詳しいとは...
尚、今回はpg_hba.confを参考までに上記のように設定しました...
実際にはpg_hba.confを調査し適切に設定してください。(セキ...
#htmlinsertpcsp(db-btm.html,db-sp.html)
終了行:
#navi(../)
* host=localhost, psql -h localhostを指定すると接続できな...
この問題を発見したのは、CakePHPをインストールしdatabase.p...
PHPのpg_connect()関数でhost=localhostを指定した時と、psql...
localhostを指定したとき、''Ident認証に失敗しました''が出...
&color(red){今回は、pg_hba.confの修正で直りましたが、各自...
''追記''~
以下の設定を行ってもlocalhostを指定すると接続できない場合...
IPv6によるlocalhostへの接続および、IPv4によるlocalhost接...
-[[PostgreSQLでIPv6のリッスンを無効にしたい場合の対処>Pos...
#htmlinsertpcsp(db-top.html,db-sp.html)
#contents
* 関連記事 [#deeeda66]
-[[PostgreSQLでIPv6のリッスンを無効にしたい場合の対処>Pos...
* 環境説明&構築 [#hbab27f2]
環境はCentOS、yumコマンドによりPostgreSQL8.4をインストー...
yumにてインストール後、PostgreSQLの設定ファイルは変更して...
SELinux, iptables, ip6tablesは動作していません。~
以下の手順によりデータベースユーザを作成してデータベース...
** データベースユーザの追加 [#n99e0ad1]
+ スーパーユーザにsu
$ su -
パスワード:
#br
+ postgresユーザにsu
# su - postgres
#br
+ 今回利用したユーザsakuraをデータベースユーザとして作成
-bash-3.2$ createuser sakura
新しいロールをスーパーユーザとしますか? (y/n)y
-bash-3.2$ exit
logout
#br
** データベースの作成 [#t5c1204c]
sakuraユーザにてデータベースfooを作成しpsqlによる接続確認...
[sakura@centos ~]$ createdb foo
[sakura@centos ~]$ psql foo
psql (8.4.9)
"help" でヘルプを表示します.
foo=# \q
* PHPのpg_connect()関数による接続 [#a7ab14cd]
PHPのデータベース接続関数 ''pg_connect()'' の引数にhost=l...
以下のPHPスクリプトで接続しようとするとエラーとなりPostgr...
[sakura@centos ~]$ cat pg_connect_ng.php
<?php
if (!($cn = pg_connect("host=localhost dbname=foo user...
echo "connect error\n";
} else {
echo "connect ok\n";
}
?>
[sakura@centos ~]$ php pg_connect_ng.php
PHP Warning: pg_connect(): Unable to connect to Postgre...
FATAL: ユーザ"sakura"のIdent認証に失敗しました in /home...
Warning: pg_connect(): Unable to connect to PostgreSQL s...
FATAL: ユーザ"sakura"のIdent認証に失敗しました in /home...
connect error
以下の''host=localhost''を削除したPHPスクリプトはPostgreS...
[sakura@centos ~]$ cat pg_connect_ok.php
<?php
if (!($cn = pg_connect("dbname=foo user=sakura passwor...
echo "connect error\n";
} else {
echo "connect ok\n";
}
?>
[sakura@centos ~]$ php pg_connect_ok.php
connect ok
* psql -h localhost foo で接続してもエラー [#ocd9e3a0]
psql fooでは正常に接続できていたのが、-h localhostを指定...
[sakura@centos ~]$ psql -h localhost foo
psql: FATAL: ユーザ"sakura"のIdent認証に失敗しました
* pg_hba.confを修正しlocalhost指定の接続を可能にする [#bc...
以下の編集および操作は全てrootユーザにて行いました。
/var/lib/pgsql/data/pg_hba.confファイルののIPv4 local con...
-修正前
# IPv4 local connections:
host all all 127.0.0.1/32 id...
- 修正後
# IPv4 local connections:
host all all 127.0.0.1/32 tr...
''ident'' を ''trust''に変更しました。~
上記の設定をtrustに変更すると、localhostからの接続は''ユ...
つまり、localhostからの接続はパスワードなしで接続できるよ...
※trustを設定したので、以下のPHPスクリプトのpasswordは不要...
以下のようにすればパスワードが必要になります。
# IPv4 local connections:
host all all 127.0.0.1/32 pas...
以下のコマンドでPostgreSQLを再起動します。
/etc/init.d/postgresql restart
または
service postgresql restart
sakuraユーザにsuし、以下のコマンドおよびPHPスクリプトを実...
- psqlコマンド
$ psql -h localhost foo
psql (8.4.9)
"help" でヘルプを表示します.
foo=# \q
- phpスクリプト
[sakura@centos ~]$ cat pg_connect_ng.php
<?php
if (!($cn = pg_connect("host=localhost dbname=foo user...
echo "connect error\n";
} else {
echo "connect ok\n";
}
?>
[sakura@centos ~]$ php pg_connect_ng.php
connect ok
localhostを指定して接続できるようになりました。
* 調査結果のまとめ [#d9541e9f]
- pg_hba.confのローカル接続の設定がデフォルトのまま(ident...
- pg_hba.confのローカル接続の設定をtrust(ロカールからの無...
* 備考 [#g3a9c8b6]
本資料は、CakePHPをインストールしdatabase.phpのhostにloca...
他のPHPフレームワークや独自で作成した場合も同様のエラーが...
現に、psql -h localhost データベース名 や pg_connect("hos...
同じ原因で本資料が問題の突破口になれば幸いです。~
Webアプリケーション屋さんがデータベースの設定に詳しいとは...
尚、今回はpg_hba.confを参考までに上記のように設定しました...
実際にはpg_hba.confを調査し適切に設定してください。(セキ...
#htmlinsertpcsp(db-btm.html,db-sp.html)
ページ名: