安装postgresql12
- 在线
# 在线安装 RPM包
yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-6-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# 安装客户端软件包
yum install postgresql12
# 安装服务器软件包
yum install postgresql12-server
# 检查版本
psql --version
- 离线
基础准备:一台可以联网的CentOS7 可以正常运行的机器
# 设置yum 软件源
yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# 创建一个文件夹,把下载下来的rpm文件直接下载到这个文件夹下
mkdir pg12_rpm_packs
# 下载pg server/client,contrib和其依赖的其他包
yum install --downloadonly --downloaddir=./pg12_rpm_packs postgresql12-server postgresql12 postgresql12-contrib
将下载的文件复制到离线服务器上,有以下几个文件:
- postgresql12-libs-12.4-1PGDG.rhel7.x86_64.rpm
- postgresql12-12.4-1PGDG.rhel7.x86_64.rpm
- postgresql12-server-12.4-1PGDG.rhel7.x86_64.rpm
- postgresql12-contrib-12.4-1PGDG.rhel7.x86_64.rpm
在离线服务器上执行安装命令:
注意一定要按照顺序从上往下执行,否则安装失败
rpm -ivh postgresql12-libs-12.4-1PGDG.rhel7.x86_64.rpm --nodeps --force
rpm -ivh postgresql12-12.4-1PGDG.rhel7.x86_64.rpm --nodeps --force
rpm -ivh postgresql12-server-12.4-1PGDG.rhel7.x86_64.rpm --nodeps --force
rpm -ivh postgresql12-contrib-12.4-1PGDG.rhel7.x86_64.rpm --nodeps --force
验证是否成功:
rpm -aq | grep postgres
初始化数据库
/usr/pgsql-12/bin/postgresql-12-setup initdb
使用自己的数据目录
# 新建数据目录
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
启动
# 设置开机自启动
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 'postgres';
ALTER ROLE
创建新用户
修改的时候需要使用命令 su - postgres 进入 postgres 用户环境
# 建立新的数据库用户
create user durant with password '123456';
# 为新用户建立数据库
create database testdb owner durant;
# 把新建的数据库权限赋予新用户
grant all privileges on database testdb to durant;
开启远程访问
进入目录:cd data/postgresql/data(具体目录可以通过 systemctl status postgresql-12 命令查看)
修改 postgresql.conf 文件:将 listen_addresses = ‘localhsot’ 修改为 listen_addresses = ‘*’
信任远程连接
进入目录:cd data/postgresql/data(具体目录可以通过 systemctl status postgresql-12 命令查看)
修改 pg_hba.conf 文件:在如图位置新增一条记录,将要连接的IP添加进来
host | all | all | 0.0.0.0/0 | password |
---|
认证方式
- trust:凡是能连接到服务器的,都是可信任的。只需要提供数据库用户名,可以没有对应的操作系统同名用户;
- md5:password 和 md5:对于外部访问,需要提供 psql 用户名和密码。对于本地连接,提供 psql 用户名密码之外,还需要有操作系统访问权(用操作系统同名用户验证)。password 和 md5 的区别就是外部访问时传输的密码是否用 md5 加密;
- ident:对于外部访问,从 ident 服务器获得客户端操作系统用户名,然后把操作系统作为数据库用户名进行登录;对于本地连接,实际上使用了peer;
- peer:通过客户端操作系统内核来获取当前系统登录的用户名,并作为psql用户名进行登录。
重启服务
systemctl restart postgresql-12
重启完后通过命令 netstat -anp 查看服务如下所示,如果是127.0.0.1说明远程访问未开启,如果是0.0.0.0说明开启成功:
开放端口
- 云服务-配置云服务器安全组:开通5432端口
- 本地服务器:
firewall-cmd --zone=public --add-port=5432/tcp --permanent # 开放5432端口
firewall-cmd --zone=public --list-ports #查看防火墙所有开放的端口
服务器上验证数据库连接
[root@localhost ~]# psql -Upostgres -d postgres -h 192.168.0.125 -p 5432
navicat连接
密码跟用户名默认是一样的