一、安装
1、yum安装
# 添加yum源
$ yum -y install https://download.postgresql.org/pub/repos/yum/12/redhat/rhel-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# 安装PostgreSQL
$ yum -y install postgresql12 postgresql12-server postgresql12-contrib
# 检查版本信息
$ psql --version
psql (PostgreSQL) 12.3
2、初始化数据库
这里需要注意一下,初始化的时候可以指定postgresql的数据目录哦!
1)使用默认数据目录
yum安装的postgresql的默认数据目录为/var/lib/pgsql/12/data
,直接初始化就行
/usr/pgsql-12/bin/postgresql-12-setup initdb
2)使用自己规划好的数据目录
如果已经规划好别的数据目录,可以在初始化的时候用-D
参数指定数据目录。
# 新建数据目录
mkdir -p /data/postgresql/data
# 授权
chown -R postgres:postgres /data/postgresql/data
# 切换到postgres用户,初始化
$ su - postgres
-bash-4.2$ /usr/pgsql-12/bin/initdb -D /data/postgresql/data
# 修改postgresql的system.service文件
vim /usr/lib/systemd/system/postgresql-12.service
Environment=PGDATA=/data/postgresql/data/
# 重新加载系统服务
systemctl daemon-reload
3、启动 postgresql 服务
systemctl enable postgresql-12
systemctl start postgresql-12
systemctl status postgresql-12
postgresql会自动完成以下操作:
-
自动生成一个linux系统用户
postgres
:管理数据库的系统用户 -
数据库用户
postgres
:数据库超级管理员 -
此用户的默认数据库为
postgres
-
可有修改下默认postgres数据库用户的密码:
$ su - postgres -bash-4.2$ psql psql (12.3) Type "help" for help. postgres=# alter role postgres with password '123456'; ALTER ROLE
二、修改配置
配置文件在数据目录中,由于我自定义了数据目录,所以是在/data/postgresql/data
中
cd /data/postgresql/data
vim postgresql.conf
# 修改监听的ip和端口
listen_addresses = '*'
vim pg_hba.conf
#新增下面一行
host all all 0.0.0.0/0 password # 所有的用户通过任意IP都可以使用面膜的方式登录PostgreSQL
重启数据库
systemctl restart postgresql-12
三、数据库的基础操作
1、连接数据库控制台
在本机想连接到数据库,需要切换到postgres用户下,在postgres用户下连接数据库,是不需要密码的。
切换 postgres 用户后,提示符变成-bash-4.2$
,使用psql
连接到数据库控制台,此时系统提示符变为postgres=#
,如下:
$ su - postgres
-bash-4.2$ psql
psql (12.3)
Type "help" for help.
postgres=#
2、SQL控制台操作语句
数据库创建与修改
# 创建数据库
create database testdb;
# 删除数据库
drop database testdb;
# 重命名数据库(该数据库必须没有活动的连接)
alter database testdb rename to newname;
# 以其他数据库为模板创建数据库(表结构、数据都会复制)
create database newdb template testdb;
# 将查询结果写入文件
\o /tmp/test.txt
select * from test;
# 列状显示
\w
# 再一次\o关闭写入,否则是连续写入的
\o
# 退出控制台
\q
数据库用户创建和授权
# 建立新的数据库用户
create user durant with password '123456';
# 为新用户建立数据库
create database testdb owner durant;
# 把新建的数据库权限赋予新用户
grant all privileges on database testdb to durant;
四、认证方式
认证权限的配置文件为:pg_hba.conf
命令行的参数说明
- -U username:用户名,默认值为
postgres
; - -d dbname:要连接的数据库名,默认值为
postgres
。如果指定-d
参数,则默认访问与用户名名称相同的数据库; - -h hostname:主机名,默认值为
localhost
; - -p port:端口号,默认值5432;
1、认证方式
常见的四种身份验证方式:
- trust:凡是能连接到服务器的,都是可信任的。只需要提供数据库用户名,可以没有对应的操作系统同名用户;
- password 和 md5:对于外部访问,需要提供 psql 用户名和密码。对于本地连接,提供 psql 用户名密码之外,还需要有操作系统访问权(用操作系统同名用户验证)。password 和 md5 的区别就是外部访问时传输的密码是否用 md5 加密;
- ident:对于外部访问,从 ident 服务器获得客户端操作系统用户名,然后把操作系统作为数据库用户名进行登录;对于本地连接,实际上使用了peer;
- peer:通过客户端操作系统内核来获取当前系统登录的用户名,并作为psql用户名进行登录。
2、远程登录
要允许远程登录,需要修改配置文件中的监听ip和认证方式。
vim postgresql.conf
# 修改监听的ip和端口
listen_addresses = '*'
vim pg_hba.conf
#新增下面一行
host all all 0.0.0.0/0 password
需要重启生效:
systemctl restart postgresql-12
验证:
[root@localhost ~]# psql -Upostgres -d postgres -h 192.168.0.125 -p 5432
参考文档:
https://www.cnblogs.com/sunhongleibibi/p/11943393.html