PostgreSQL数据库中pg

PostgreSQL 数据库中 pg_hba.conf文件 的经常使用是本文咱们关键要引见的内容,由于最近试用PostgreSQL 9.04,将pg_hba.conf性能的一些心得分享。pg_hba.conf是客户端认证性能文件,定义如何认证客户端。

罕用的pg_hba.conf性能:

TYPE定义了多种衔接PostgreSQL的方式,区分是:“local”经常使用本地unix套接字,“host”经常使用TCP/IP衔接(包含SSL和非SSL),“host”联合“IPv4地址”经常使用IPv4方式,联合“IPv6地址”则经常使用IPv6方式,“hostssl”只能经常使用SSL TCP/IP衔接,“hostnossl”不能经常使用SSL TCP/IP衔接。

DATABASE指定哪个数据库,多个数据库,库名间以逗号分隔。“all”只要在没有其余的合乎条目时才代表“一切”,假设有其余的合乎条目则代表“除了该条之外的”,由于“all”的优先级***。如下例:

这两条都是指定local访问方式,由于前一条指定了特定的数据库db1,所一条的all代表的是除了db1之外的数据库,同理用户的all也是这个情理。

USER指定哪个数据库用户(PostgreSQL正轨的叫法是角色,role)。多个用户以逗号分隔。

CIDR-ADDRESS项local方式不用填写,该项可以是IPv4地址或IPv6地址,可以定义某台主机或某个网段。

METHOD指定如何处置客户端的认证。罕用的有ident,md5,password,trust,reject。

ident是Linux下PostgreSQL自动的local认证方式,凡是能正确登录主机的操作系统用户(注:不是数据库用户)就能经常使用本用户映射的数据库用户不需明码登录数据库。用户映射文件为pg_ident.conf,这个文件记载着与操作系统用户婚配的数据库用户,假设某操作系统用户在本文件中没有映射用户,则自动的映射数据库用户与操作系统用户同名。比如,主机上有名为user1的操作系统用户,同时数据库上也有同名的数据库用户,user1登录操作系统后可以间接输入psql,以user1数据库用户身份登录数据库且不需明码。

很多初学者都会遇到psql -U username登录数据库却发生“username ident 认证失败”的失误,明明数据库用户曾经createuser。要素就在于此,经常使用了ident认证方式,却没有同名的操作系统用户或没有相应的映射用户。处置打算:1、在pg_ident.conf中参与映射用户;2、扭转认证方式。

md5是罕用的明码认证方式,假设你不经常使用ident,***经常使用md5。明码是以md5方式传送给数据库,较安保,且不需建设同名的操作系统用户。

password是以明文明码传送给数据库,倡导不要在消费环境中经常使用。

trust是只需知道数据库用户名就不须要明码或ident就能登录,倡导不要在消费环境中经常使用。reject是拒绝认证。

本地经常使用psql登录数据库,是以unix套接字的方式,附合local方式。

经常使用PGAdmin3或php登录数据库,不论能否本地均是以TCP/IP方式,附合host方式。假设是本地(数据库地址localhost),CIDR-ADDRESS则为127.0.0.1/32。

例如:

1、准许本地经常使用PGAdmin3登录数据库,数据库地址localhost,用户user1,数据库user1db:

2、准许10.1.1.0~10.1.1.255网段登录数据库:

3、信赖192.168.1.10登录数据库:

pg_hba.conf修正后,经常使用pg_ctl reload从新读取pg_hba.conf文件,假设pg_ctl找不到数据库,则用-D /.../pgsql/data/ 指定数据库目录,或export PGDATA=/.../pgsql/data/ 导入环境变量。

须要留意的是:PostgreSQL自动只监听本地端口,用netstat -tuln只会看到“tcp 127.0.0.1:5432 LISTEN”。修正postgresql.conf中的listen_address=*,监听一切端口,这样远程能力经过TCP/IP登录数据库,用netstat -tuln会看到“tcp 0.0.0.0:5432 LISTEN”。

对于PostgreSQL数据库中pg_hba.conf文件的经常使用的相关常识就引见到这里了,宿愿本次的引见能够对您有所收获!

【编辑介绍】

您可能还会对下面的文章感兴趣: