一、安装 PostgreSQL13
以 root 身份运行如下命令
rpm -ivh postgresql13-libs-13.7-1PGDG.rhel7.x86_64.rpm
rpm -ivh postgresql13-13.7-1PGDG.rhel7.x86_64.rpm
rpm -ivh postgresql13-server-13.7-1PGDG.rhel7.x86_64.rpm
rpm -ivh postgresql13-contrib-13.7-1PGDG.rhel7.x86_64.rpm
实际安装时执行最后一条命令报错缺少依赖包,于是使用yum命令安装最后一个包成功。
二、 数据库配置
2.1 修改环境变量
可以先删除默认创建的postgres用户
userdel -r postgres
然后创建用户组
groupadd -g 701 postgres
useradd -g 701 -u 701 -s /bin/bash -m postgres
这样的好处是用户home目录就会在/home/postgres下,否则默认是在/var/lib/pgsql下,
su - postgres
vi ~/.bashrc
添加下面变量
#For PostgreSQL
export PGHOME=/usr/pgsql-13
export PGDATA=/app/pgsql/13.7/data
export PGHOST=/app/pgsql/13.7/socket
export PGUSER=postgres
export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
export PATH=$PGHOME/bin:$PATH
2.2 修改数据库配置
前面修改的数据库目录,这里需要创建相关目录,且要赋予权限
# mkdir /app
# chown postgres:postgres /app
# su - postgres
$ mkdir -p /app/pgsql/13.7/data
$ mkdir -p /app/pgsql/13.7/socket
初始化数据库
$ initdb
修改 postgresql.conf
$ cd $PGDATA
$ vi postgresql.conf
# 修改listen_addresses
listen_addresses = '*'
修改unix_socket_directories,但是如果只是单纯修改这个参数指定的路径,那么psql会报错,在用户环境变量中指定PGHOST变量为这个目录就可以解决这个问题了,所以前面的PGHOST环境变量已经指定
unix_socket_directories = '/app/pgsql/13.7/socket'
重启数据库生效,在root下用systemctl restart postgresql-13重启
postgres=# show unix_socket_directories ;
unix_socket_directories
-------------------------
/app/pgsql/13.7/tmp
(1 row)
修改 pg_hba.conf(pg_hba.conf文件是一个黑白名单的访问控制文件,可以控制允许哪些IP地址的机器访问数据库)
$ cd $PGDATA
$ vi pg_hba.conf
# 新增一行
host all all 0.0.0.0/0 md5
三、配置自启动
修改数据存储目录在自启动脚本中的值
# vi /usr/lib/systemd/system/postgresql-13.service
# Location of database directory
# Environment=PGDATA=/var/lib/pgsql/13/data/ #-- 注释掉这一句
Environment=PGDATA=/app/pgsql/13.7/data/ #-- 修正为实际值
使用系统命令控制数据库启停
systemctl enable postgresql-13
systemctl status postgresql-13
systemctl start postgresql-13
四、登录数据库,创建用户及数据库
4.1、切换到用户postgres
su - postgres
4.2、登录数据库
psql -U postgres
psql
两种方式都可以,区别以后研究
远程连接其他库:
psql -h <hostname or IP> -p <port> [数据库名] [用户名]
4.3、查询角色属性
\du
4.4、给账户绑定从属角色
GRANT postgres TO root;
4.5、退出当前数据库
\q
小结:要习惯使用\命令,不懂就查看 \?
五、创建用户及数据库
创建root用户及密码:create user root with password 'oracle';
创建数据库:create database dt owner root;
授权:grant all privileges on database dt to root;
六、重启、关闭数据库
pg_ctl命令可以控制数据库启停等
pg_ctl start
pg_ctl stop
pg_ctl restart
pg_ctl reload
pg_ctl status
pg_ctl promote
pg_ctl logrotate
pg_ctl kill