/var/lib/pgsql/data/pg_hba.conf
http://www.cnblogs.com/mchina/archive/2012/06/06/2539003.html
postgresAdmin3
http://www.cnblogs.com/mchina/archive/2012/06/06/2539003.html
http://jingyan.baidu.com/article/3ea51489ec3cb452e71bba52.html
http://developer.51cto.com/art/201401/426225.htm
调试方法
[root@linux ~]# php /var/www/html/pgsql.php
PHP Warning: pg_connect(): Unable to connect to PostgreSQL server: FATAL: Ident authentication failed for user "postgres" in /var/www/html/pgsql.php on line 3连接失败,不能连接到数据库[root@linux ~]#看起来是帐号密码的问题
PostgreSQL 数据库默认会创建一个postgres的数据库用户作为数据库的管理员,默认密码为空,我们需要修改为指定的密码,这里设定为’postgres’。
# su - postgres
$ psql
postgres=# ALTER USER postgres WITH PASSWORD 'postgres';
ALTER ROLEpostgres=# select * from pg_shadow ; usename | usesysid | usecreatedb | usesuper | usecatupd | passwd | valuntil | useconfig ----------+----------+-------------+----------+-----------+-------------------------------------+----------+----------- dbuser | 16384 | f | f | f | md5baa6c789c3728a1a449b82005eb54a19 | | postgres | 10 | t | t | t | md53175bce1d3201d16594cebf9d7eb3f9d | | (2 rows)postgres=# \l List of databases Name | Owner | Encoding | Collation | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- david | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres : postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres : postgres=CTc/postgres testdb | dbuser | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/dbuser : dbuser=CTc/dbuser(5 rows)postgres=# ALTER USER dbuser WITH PASSWORD 'dbuser';ALTER ROLEpostgres=# \l List of databases Name | Owner | Encoding | Collation | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- david | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres : postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres : postgres=CTc/postgres testdb | dbuser | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/dbuser : dbuser=CTc/dbuser(5 rows)不过仍然有Ident authentication failed for user错误,
尝试修改 /var/lib/pgsql/data/pg_hba.conf
, 去掉
#host all all 127.0.0.1/32 ident
service postgresql restartservice httpd restart
service postgresql restart
重新执行php,发现这次dbuser能访问了,只是dbuser 数据库不存在
[root@linux ~]# php /var/www/html/pgsql.php PHP Warning: pg_connect(): Unable to connect to PostgreSQL server: FATAL: database "dbuser" does not exist in /var/www/html/pgsql.php on line 3连接失败,不能连接到数据库[root@linux ~]#
修改php脚本:
<?php// 连接,选择数据库$dbconn = pg_connect("host=127.0.0.1 dbname=david user=dbuser password=dbuser");//see if our connection was successfulif (!$dbconn) { //connection failed - exit the page with an error //you could also try to proceed without the //database - it's up to you echo "连接失败,不能连接到数据库"; exit;}else{ echo "连接成功";}echo "<br>php配置详细信息如下:";echo phpinfo();// 关闭连接pg_close($dbconn);?>
这次命令行执行php 可以成功显示数据,但是用firefox执行该脚本,仍然显示error , Why?