环境: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