环境:centos7.4 

一、安装

1. 更新系统

$ yum update

2. 安装

  这里安装系统默认的postgresql 9.2

$ yum install postgresql-server

3. 初始化数据库

$ postgresql-setup initdb

4. 启动数据库

$ systemctl start postgresql
$ systemctl enable postgresql

5. 查看服务的运行状态

$ systemctl status postgresql
● postgresql.service - PostgreSQL database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: disabled)
   Active: active (running) since 六 2019-07-13 08:01:08 EDT; 5min ago
 Main PID: 10401 (postgres)
   CGroup: /system.slice/postgresql.service
           ├─10401 /usr/bin/postgres -D /var/lib/pgsql/data -p 5432
           ├─10402 postgres: logger process   
           ├─10404 postgres: checkpointer process   
           ├─10405 postgres: writer process   
           ├─10406 postgres: wal writer process   
           ├─10407 postgres: autovacuum launcher process   
           └─10408 postgres: stats collector process   

7月 13 08:01:07 tools systemd[1]: Starting PostgreSQL database server...
7月 13 08:01:08 tools systemd[1]: Started PostgreSQL database server.
[root@tools ~]# 

6. 给默认超级数据账号postgres 增加密码:

[root@tools ~]# su - postgres
上一次登录:六 7月 13 08:41:17 EDT 2019pts/0 上
-bash-4.2$ psql
psql (9.2.24)
Type "help" for help.

postgres=# ALTER USER postgres WITH PASSWORD 'xxxxxx';
ALTER ROLE

7. 默认postgresql-server 监听127.0.0.1,这样远程机器不能访问,我们需要开发给其他机器访问:

   修改 /var/lib/pgsql/data/postgresql.conf 中的listen_addresses参数为'*',

listen_addresses = '*'                  # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)

  重启,使其修改生效:

# systemctl restart postgresql

 8. postgresql-server 默认所有账号只允许本地访问,这里我们修改为所有远程主机开放所有数据库:

修改:/var/lib/pgsql/data/pg_hba.conf,增加一下配置:

host    all             all             0.0.0.0/0            md5

reload, 使其生效:

# systemctl reload postgresql

 当然,我们在生产环境不能这样做,需要精细到那些数据库只允许哪些账号连接,详细可以查看pg_hba.conf中的说明。 

二、使用

1. 创建数据库账号

安装postgresql默认创建了postgres的系统账号,该账号(postgres)也是postgresql数据库的超级账号,一般不会使用该账号。

切换到postgres系统账号

[root@tools ~]# su - postgres
上一次登录:六 7月 13 08:08:56 EDT 2019pts/0 上

创建数据库账号

$ psql 
psql (9.2.24)
Type "help" for help.

postgres=# create user testuser login password 'xxxxxx';
CREATE ROLE

2. 创建数据库

$ psql 
psql (9.2.24)
Type "help" for help.

postgres=# create database testdb;
CREATE DATABASE

#赋予数据库所有的权限给testuser
postgres=# grant all on database testdb to testuser;
GRANT

我们也可以使用命令行方式创建数据库:

[root@tools ~]# createdb -U postgres -O testuser  --encoding=UTF-8 testdb  
口令: 
[root@tools ~]# psql -U postgres -l
用户 postgres 的口令:
                                     资料库列表
   名称    |  拥有者  | 字元编码 |  校对规则   |    Ctype    |       存取权限        
-----------+----------+----------+-------------+-------------+-----------------------
           |          |          |             |             | zyh=CTc/postgres
 testdb    | testuser | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | 
 postgres  | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | 
 template0 | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(4 行记录)

三、问题

1. 切换账号时,提示 "对等认证失败"

-bash-4.2$ psql -U testuser testdb
psql: 致命错误:  对用户"testuser"的对等认证失败

  解决方法:修改:/var/lib/pgsql/data/pg_hba.conf

 把认证方法从peer改为md5,如下图

reload一次postgres服务,让修改生效:

[root@tools ~]# systemctl reload postgresql

 

更多推荐