一、下载 pgsql 安装包

下载地址:http://www.postgresql.org/ftp/source/

选择要安装的版本进行下载

groupadd postgres
useradd -g postgres postgres

mkdir -p /usr/local/pgsql-17.1   #安装路径
mkdir -p /data/pgsql/data        #数据存放路径
chown postgres:postgres /data/pgsql/data

vi /etc/profile
export PGHOME=/usr/local/pgsql-17.1
export PGDATA=/data/pgsql/data
PATH=$PATH:$HOME/bin:$PGHOME/bin

四、安装 pgsql

tar -zxvf postgresql-17.1.tar.gz
cd postgresql-17.1
./configure --prefix=/usr/local/pgsql-17.1/

make -j$(nproc) && make install   #-j$(nproc)自动计算线程数,可加速编译

五、initdb初始化数据库和修改配置

su postgres

initdb

初始化成功查看数据目录已经有数据文件了

初始化成功之后先别急着启动,如果想让对外访问,我们还需要修改postgresql.conf 和 pg_hba.conf 这两个配置文件。

将 postgresql.conf 中的listen_addresses 修改为 * ,默认是 localshot

pg_hba.conf 最后一行添加 host all all 192.168.31.1/24 md5

六、启动 pgsql 和修改管理员密码

pg_ctl start -D /data/pgsql/data

psql -U postgres

alter user postgres with password 'xxxxxx';

七、额外篇

(一) pg_ctl 工具

pg_ctl是一个初始化、启动、停止、控制PostgreSQL服务器的命令行工具

  1. 初始化数据库,详见initdb命令:pg_ctl init[db] [-D DATADIR] [-s] [-o OPTIONS]

  2. 启动 | 停止 | 重启数据库:pg_ctl start|stop|restart [-D DATADIR] [-l FILENAME] [-W] [-t SECS] [-s] [-o OPTIONS] [-p PATH] [-c]

  3. 重新加载配置文件:pg_ctl reload [-D DATADIR] [-s]

  4. 检查数据库是否在运行:pg_ctl status [-D DATADIR]

  5. 通知数据库结束standby并开始读写:pg_ctl promote [-D DATADIR] [-W] [-t SECS] [-s]
    向进程发送消息。在没有kill命令的windows上使用:pg_ctl kill SIGNALNAME PID

  6. 在Windows上注册和注销服务:pg_ctl register | unregister

参数说明
-D DATADIR 数据库所在目录
-W 不等待操作完成
-s  仅打印错误
-t SECS 等待操作(参阅选项-w)完成的最大秒数
-l FILENAME 追加服务器日志输出到 filename
-m SHUTDOWN-MODE 关闭模式:smart、 fast或immediate
Smart:等待所有客户端断开连接以及任何在线备份结束。
Fast:(默认)所有活动事务都被回滚并且客户端被强制断开连接,然后服务器被关闭。
Immediate:将立刻中止所有服务器进程,而不是做一次干净的关闭。
SIGNALNAME:ABRT HUP INT KILL QUIT TERM USR1 USR2

postgresql(PG)有三种关闭方式可选:

  • smart:智能关闭模式。但凡有外部连接未结束,就需要等待这些连接结束后才会开始关闭数据库。

  • fast:快速关闭模式。通过向所有活动会话发送SIGTERM信号来结束这些会话。

  • immediate:直接关闭模式。向所有子进程发送SIGQUIT信号。通过这种方式关闭数据库,完整性是不可靠的。再次启动数据库时将会重放WAL日志进行恢复。

三种模式均不允许有新的连接接入数据库。

(二) psql 客户端工具

一开始使用 psql 登录的时候,细心的人会发现一个特别的现象,不用输入密码,直接 psql -U postgres 就可以了。在生产环境上,最好还是配置一下输入密码才能登录。

还是熟悉的老朋友pg_hba.conf ,打开后把 trust 换成 md5 就行了。

#连接到数据库
psql -d database -U  user 
#切换数据库,username要是没指定,默认使用当前用户
\c dbname username
#列出可用的数据库
\l
#列出可用的表
\t
#描述一个表
\d table_name
#列出可用模式
\dn
#列出可用函数
\df
#列出可用视图
\dv
#列出用户及其角色
\du
#列出索引
\dl
#查看历史命令
\s
\s filename 将历史命令保存到文件中
# 打开查询执行时间
\timing
#退出psql
\q