Linux安装PostgreSQL设置远程访问(在线+离线)

tech2022-09-26  95

安装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.rpmpostgresql12-12.4-1PGDG.rhel7.x86_64.rpmpostgresql12-server-12.4-1PGDG.rhel7.x86_64.rpmpostgresql12-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添加进来

hostallall0.0.0.0/0password

认证方式

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连接

密码跟用户名默认是一样的

最新回复(0)