两个细节,标记红色的部分是数据库主工作进程,其中明显表明了可执行程序和数据文件位置。另外就是大部分进程执行用户都是postgres,就说明虽然是通过root启动的程序,但是root也是用postgres用户进程启动程序。
本地连接情况,在本地可以使用psql作为客户端进行连接。
[root@TEST-DB ~]# su - postgres
-bash-4.1$ psql
psql (9.5.0)
Type "help" for help.
postgres=# help
You are using psql, the command-line interface to PostgreSQL.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
postgres=#
postgres=# alter user postgres with password 'postgres';
ALTER ROLE
postgres=# select * from pg_shadow;
usename | usesysid | usecreatedb | usesuper | userepl | usebypassrls | passwd
| valuntil | useconfig
----------+----------+-------------+----------+---------+--------------+-------------------------
------------+----------+-----------
postgres | 10 | t | t | t | t | md53175bce1d3201d16594ce
bf9d7eb3f9d | |
(1 row)
postgres-# \q
-bash-4.1$ exit
logout
根据标准psql命令,后面应当写上连接数据库的名称。如果没有写,就默认连接名称为postgres的数据库,这个库就是在initdb执行过程中创建好的内容。
4、远程连接配置
注意:我们当前所有操作都是在数据库服务器上进行的操作。默认情况下,Postgresql对于远程访问连接时拒绝的。我们需要进行额外的配置项目。
同MySQL相似,PG的很多配置参数都是散布在文本格式文件中的。在配置网络连接中,我们需要修改两个文件。
首先是PG数据文件下的pg_hba.conf。
[root@TEST-DB ~]# su - postgres
-bash-4.1$ cd /var/lib/pgsql/9.5/data/
-bash-4.1$ ls -l | grep conf
-rw------- 1 postgres postgres 4224 Jan 21 09:53 pg_hba.conf
-rw------- 1 postgres postgres 1636 Jan 21 09:53 pg_ident.conf
-rw------- 1 postgres postgres 88 Jan 21 09:53 postgresql.auto.conf
-rw------- 1 postgres postgres 21738 Jan 21 09:53 postgresql.conf
pg_hba.conf内容很多,我们需要修改其中关于允许连接站点的设置。
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication postgres peer
#host replication postgres 127.0.0.1/32 ident
#host replication postgres ::1/128 ident
在IPv4 Local connection部分进行配置。
# IPv4 local connections:
host all all 127.0.0.1/32 ident
host all all 172.17.107.0/24 password
host all all 172.17.197.0/24 password
连接IP地址后面的/24表示可以支持该网段所有IP地址访问。Password表示通过用户名密码验证方式连接。
另一个配置文件是postgresql.conf,其中定义了监听程序listener的监听范围。默认情况下取值如下:
# - Connection Settings -
#listen_addresses = 'localhost' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
#port = 5432 # (change requires restart)
max_connections = 100 # (change requires restart)
修改listen_addresses项目,去除掉注释信息,将localhost变为*。这样就控制监听程序监听来自所有IP地址的连接请求了。
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
#port = 5432 # (change requires restart)
max_connections = 100 # (change requires restart)
重新启动PG程序。
[root@TEST-DB ~]# service postgresql-9.5 restart
Stopping postgresql-9.5 service: [ OK ]
Starting postgresql-9.5 service: [ OK ]
在远程Windows服务器上,我们通过pgAdmin客户端工具配置好连接界面。
点击连接,可以确认成功。
5、结论
PG是目前比较流行的开源关系数据库产品。对于大多数的行业和企业而言,关系型数据库其实还是占到需求的主流位置的。