PostgreSQL安装
postgreSQL是一种先进的对象关系数据库管理系统。它支持SQL标准的扩展子集,包括事务、外键、子查询、触发器、用户定义类型和功能。此发行版还包含C语言绑定。
编译安装
安装依赖
1 | # CentOS |
下载解压
1 | # wget https://ftp.postgresql.org/pub/source/v13.0/postgresql-13.0.tar.gz |
安装
1 | ./configure \ |
EXTENSION扩展
pg的扩展插件通常位于目录$PGHOME/share/extension
中。编译安装过程中,通常安装PostgreSQL源码文件中的contrib
文件夹中安装程序脚本。如果尚未安装,则目录中不会有这些插件。
比如安装 pgcrypto,进入contrib/pgcrypto
,执行make && make install
。
查询到可用的Extension扩展
1 | select * from pg_available_extensions; |
安装Extension扩展
哪个库需要使用就在哪个库安装,否则会找不到。
1 | CREATE EXTENSION pgcrypto; |
生成一个uuid
1 | select * from gen_random_uuid() |
添加用户并授权
1 | useradd postgres |
添加环境变量
1 | vi /etc/profile |
初始化数据
1 | 切换到postgres执行 |
修改pg_hba.conf
文件
1 | vi /data/pgsql/data/pg_hba.conf |
TYPE:
local:使用Unix-domainsocket
host:使用TCP/IP连接,可以是SSL的,也可以不是
hostssl:必须是SSL的
hostnossl:必须是非SSL的DATABASE:
数据库名,可以是”all”, “sameuser”, “samerole”, “replication”。all表示所有,但不包括replication。可以通过用逗号分隔的方法声明多个数据库, 也可以通过前缀
@
来声明一个包含数据库名的文件。USER:
用户名,可以为”all”,表示所有,也可以具体指定一个用户。多个用户名可以通过用逗号分隔的方法声明。一个包含用户名的文件可以通过在文件名前面前缀
@
来声明。ADDRESS:
可以是为一个主机名,或者由IP地址和CIDR掩码组成。掩码可以为0-32(IPv4)或者0-128(IPv6)间的一个整数,32表示子网掩码为255.255.255.255,24表示子网掩码为255.255.255.0。主机名规范以一个点(
.
)开头,匹配一个实际主机名后缀。samehost可以匹配所有主机、samenet可以匹配同一个掩码内的所有主机。METHOD:
密码加密策略,password表示以明文方式发送密码,md5和scram-sha-256会以对应的方式加密再发送密码。
更多配置参考:pg_hba.conf
文件
修改postgresql.conf
配置文件
1 | vi /data/pgsql/data/postgresql.conf |
将localhost
改为*
,表示监听所有的网络连接。其他的参数保持默认即可。
启动
切换root用户
1 | vi /usr/lib/systemd/system/postgresql.service |
1 | [Unit] |
1 | systemctl enable postgresql |
登录数据库并设置密码
postgres用某个用户登录,默认登录同名数据库,如果用户名和数据库不同,需要特别指定,否则会报找不到库!
例:
1 psql -U test -d postgres-U 指定用户
-d 指定数据库
容器启动
1 | docker run -d \ |