如何设置PostgreSQL远程访问

转载请注明来源:http://blog.csdn.net/caoshiying

Postgresql开启远程访问主要有两个配置环节,一个是允许远程主机登录,二是创建可远程访问的用户。大部分人因配置有问题而无法远程访问,而把postgres用户改为可远程访问的不可取的做法。这里说一下我的做法。

基本的Postgresql安装配置的文档请看文章:《CentOS 6.8操作系统安装PostGIS笔记》。下面首先说第一个配置环节。

1.1.允许远程主机登录

打开postgresql的服务启动配置文件,一般情况下在这里

/etc/postgresql/9.3/main/postgres.conf

找到listen_address 配置节,把 local 改成 * 。如果 listen_address 被注释掉了,那么就要取消注释。

打开postgresql的远程访问配置文件,一般情况下在这里

/etc/postgresql/9.3/main/pg_hba.conf

注意Postgresql版本号。打开没有注释掉的代码

host    all    all    127.0.0.1/32    md5

把它改成:

host    all    all    0.0.0.0/0        md5

保存后运行命令:
service postgresql restart

使配置生效

1.2.创建可远程访问的用户

再次提一下,把postgresql用户改为可远程访问的做法是不可取的。登录SSH登录数据库所在主机

ssh admin@192.168.1.7

输入密码,登录后运行:
sudo su - postgres

再次输入密码后转到了postgres 用户,运行:
psql

进入了数据库环境,下面创建用户
CREATE USER test CREATEDB;

注意分号。CREATEDB 是权限,还有其它权限,比如 SUPERUSER createuser 等。一般情况下 CREATEDB 是最安全的做法。因为这个 test 用户的权限被限制在很小范围。

修改用户密码

ALTER USER test PASSWORD 'test123';

然后退出Psql 退出 SUDO 退出 SSH ,回到远程主机。
\q
exit
exit
exit

在远程主机运行:
psql -h 192.168.1.7 -U test -W

输入密码,进入了Psql 。创建一个数据库试试看:
CREATE DATABASE test OWNDER test;

成功了。

1.3.Psql常用命令

\du:列出当前所有的用户信息

\l: 列出当前所有的数据库信息

\q退出

\password username修改指定的user的密码

\dn:查看shema

\i:命令从指定的文件中读取命令

1.4.常见问题

1.4.1.psql: FATAL: Ident authentication Failed for user "mypguser"

请编辑你的pg_hba.conf,这个文件一般位于/etc/postgresql/X.Y/main/pg_hba.confX.Y是你的Postgresql的版本号,将下面行的peer改为trust

local all all trust # replace ident or peer with trust

1.4.2.psql: FATAL: Peer authentication Failed for user "mypguser"

请仍然修改pg_hba.conf文件,该下面行的peermd5

local all all md5 # replace peer with md5

完成上面的修改后请重新加载postgresql
/etc/init.d/postgresql reload

相关文章

项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果...
本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表...
错误现象问题原因这是在远程连接时pg_hba.conf文件没有配置正...
因本地资源有限,在公共测试环境搭建了PGsql环境,从数据库本...
wamp 环境 这个提示就是说你的版本低于10了。 先打印ph...
psycopg2.OperationalError: SSL SYSCALL error: EOF detect...