rocky9安装pgSQL
PostgreSQL 数据库安装手册
本手册基于Rocky9.1(内核版本 5.14.0-284.30.1.el9_2.x86_64)操作系统安装,其他环境请酌情参考
数据库版本为15.4 ,数据库下载地址: PostgreSQL: File Browser
下载pgsql15.4
[root@postgreSQL ~]# wget https://ftp.postgresql.org/pub/source/v15.4/postgresql-15.4.tar.bz2
解压缩
[root@postgreSQL ~]# tar -xvf postgresql-15.4.tar.bz2
安装所需依赖
[root@postgreSQL ~]# dnf install zlib-devel readline-devel gcc gcc-c++ make openssl-devel python3-devel openldap-devel -y
创建pgsql用户并设置密码(注意:用户需要具有登录权限)
[root@postgreSQL ~]# useradd postgres && echo 'your_password' | passwd --stdin postgres
创建数据目录和编译安装目录
[root@postgreSQL data]# mkdir /pg_data #数据目录
[root@postgreSQL data]# mkdir -p /usr/local/pgsql15.4 #编译安装目录
编译安装pgsql
[root@postgreSQL ~]# cd postgresql-15.4/
[root@postgreSQL postgresql-15.4]# ./configure --prefix=/usr/local/pgsql15.4/
过程省略....
[root@postgreSQL postgresql-15.4]# gmake world && gmake install-world #编译安装所有插件
编译安装过程省略....
[root@postgreSQL postgresql-15.4]# ln -s /usr/local/pgsql15.4 /usr/local/pgsql #创建软连接,方便后续管理升级等
修改目录属主和属组,更改权限
[root@postgreSQL local]# chown -R postgres. /usr/local/pgsql15.4
[root@postgreSQL local]# chown -R postgres. /pg_data
[root@postgreSQL local]# chmod 700 /pg_data
[root@postgreSQL local]# ll -d /pg_data
drwx------. 2 postgres postgres 6 Oct 20 13:50 /pg_data
在pgsql用户中配置环境变量
[postgres@postgreSQL ~]# su - pg_hanjy
[postgres@postgreSQL ~]$ cat >> .bash_profile << EOF
export PG_HOME=/usr/local/pgsql/
export PGDATA=/pg_data
export LD_LIBRARY_PATH=$PG_HOME/lib
export PATH=$PATH:$PG_HOME/bin
export PGPORT=9527
EOF
[postgres@postgreSQL ~]$ source .bash_profile
[postgres@postgreSQL ~]$ psql --version #验证是否安装成功
psql (PostgreSQL) 15.4
初始化数据库
[postgres@postgreSQL ~]$ initdb -D $PGDATA -E utf8
启动服务
[postgres@postgreSQL ~]$ pg_ctl -D $PGDATA start
waiting for server to start....2023-10-21 09:12:34.768 CST [22415] LOG: starting PostgreSQL 15.4 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.3.1 20221121 (Red Hat 11.3.1-4), 64-bit
2023-10-21 09:12:34.772 CST [22415] LOG: listening on IPv6 address "::1", port 9527
2023-10-21 09:12:34.773 CST [22415] LOG: listening on IPv4 address "127.0.0.1", port 9527
2023-10-21 09:12:34.777 CST [22415] LOG: listening on Unix socket "/tmp/.s.PGSQL.9527"
2023-10-21 09:12:34.786 CST [22418] LOG: database system was shut down at 2023-10-21 09:11:01 CST
2023-10-21 09:12:34.795 CST [22415] LOG: database system is ready to accept connections
done
server started
修改用户控制文件和配置文件,支持用户远程登录(数据存放目录)
TYPE 参数设置
TYPE 表示主机类型,值可能为:
若为
local
表示是unix-domain的socket连接,若为
host
是TCP/IP socket若为
hostssl
是SSL加密的TCP/IP socket
DATABASE 参数设置
DATABASE 表示数据库名称,值可能为:
all
,`sameuser`,`samerole`,`replication`,`数据库名称` ,或者多个数据库名称用
逗号
,注意ALL不匹配 replication
USER 参数设置
USER 表示用户名称,值可以为:
all
,`一个用户名`,`一组用户名` ,多个用户时,可以用,
逗号隔开,或者在用户名称前缀
+
;在USER和DATABASE字段,也可以写一个单独的文件名称用
@
前缀,该文件包含数据库名称或用户名称ADDRESS 参数设置
该参数可以为
主机名称
或者`IP/32(IPV4)或
IP/128(IPV6)`,主机名称以
.
开头,`samehost`或`samenet` 匹配任意Ip地址
METHOD 参数设置
该值可以为"trust", "reject", "md5", "password", "scram-sha-256",
"gss", "sspi", "ident", "peer", "pam", "ldap", "radius" or "cert"
注意 若为`password`则发送的为明文密码
参数释义
trust
无条件地允许连接。这个方法允许任何可以与PostgreSQL 数据库服务器连接的用户以他们期望的任意PostgreSQL 数据库用户身份进行连接,而不需要口令或任何其他认证。参阅第 19.3.1 节获取细节。
reject
无条件地拒绝连接。常用于从一个组中"过滤"某些主机,例如, 一个拒绝行能够从连接中锁定一个指定的主机,而稍后的行允许指定网络中的剩余的主机连接。
md5
要求客户端提供一个双重MD5散列的口令进行认证。参阅第 19.3.2 节获取细节。
password
要求客户端提供一个未加密的口令进行认证。因为口令是以明文形式在网络上传递的, 所以我们不应该在不安全的网络上使用这个方式。参阅第 19.3.2 节获取细节。
gss
使用GSSAPI认证用户。这只能用于TCP/IP连接。参阅第 19.3.3 节获取细节。
sspi
使用SSPI认证用户。这只能在Windows上使用。参阅第 19.3.4 节获取细节。
ident
获取客户的操作系统名然后检查该用户是否匹配要求的数据库用户名, 方法是用户的身份通过与运行在客户端上的 ident 服务器连接进行判断的。 Ident认证只在进行TCP/IP连接的时候才能用。当指定本地连接时,将使用peer认证。 参阅第 19.3.5 节获取细节。
peer
为操作系统获取客户端操作系统用户名,并检查该用户是否匹配要求的数据库用户名。 该方法只适用于本地连接。参阅第 19.3.6 节获取细节。
ldap
使用LDAP服务器进行认证。参阅第 19.3.7 节获取细节。
radius
使用RADIUS服务器进行认证,参阅第 19.3.8 节获取细节。
cert
使用SSL客户端证书进行认证。参阅第 19.3.9 节获取细节。
pam
使用操作系统提供的可插入认证模块服务(PAM)来认证。参阅第 19.3.10 节获取细节。
注意
修改该配置文件中的参数,必须重启
postgreSql
服务,若要允许其它IP地址访问该主机数据库,则必须修改
postgresql.conf
中的参数listen_addresses
为*
重启:pg_ctl reload 或者 执行 SELECT pg_reload_conf()
#修改控制文件的放行策略加入"host all postgres 172.16.1.0/24 trust" 允许postgres用户远程登录
[postgres@postgreSQL pg_data]$ vim /pg_data/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all postgres 172.16.1.0/24 trust
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust
#修改配置文件第60行的监听端口
[postgres@postgreSQL pg_data]$ vim +60 /pg_data/postgresql.conf
listen_addresses = '172.16.1.244' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
#port = 5432 # (change requires restart)
max_connections = 100 # (change requires restart)
#superuser_reserved_connections = 3 # (change requires restart)
#unix_socket_directories = '/tmp' # comma-separated list of directories
# (change requires restart)
#unix_socket_group = '' # (change requires restart)
#重新启动数据库
[postgres@postgreSQL pg_data]$ pg_ctl -D $PGDATA restart -mf
#如需加入开机自启可以使用rc.local方式
[root@postgreSQL ~]# echo 'su - postgres -c "pg_ctl -D /pg_data start"' >> /etc/rc.d/rc.local && chmod +x /etc/rc.d/rc.local
测试远程登录
[postgres@postgreSQL pg_data]$ psql -d postgres -U postgres -W -h 172.16.1.244 -p 9527
Password:
postgres=#