PostgreSQL安装

前置注意事项

本教程除去“安装依赖”的操作是在root用户下执行,其他所有操作均在安装用户下执行。

安装依赖

yum install -y perl-devel perl-ExtUtils-Embed systemd-devel readline-devel uuid-devel zlib-devel clang-devel llvm-devel perlExtUtils-Embed tcl-devel libicu-devel libxml2-devel libxslt-devel python-devel python3-devel gcc gcc-c++ llvm3.9-devel openssl-devel lz4-devel pam-devel openldap-devel cmake bison flex

创建安装所需目录

此处,我均在安装用户的home目录下创建,实际安装时,可以自行规划目录。

# 数据库安装目录,即bin文件夹所在目录
mkdir /home/install_user/pgsql
# 数据目录,数据库数据及数据库配置文件所在目录
mkdir /home/install_user/pgsql/data
# 临时文件目录,用于创建Unix域套接字的目录,不配置时,默认在/tmp目录下创建
mkdir /home/install_user/pgsql/tmp
# 数据库服务日志目录
mkdir /home/install_user/pgsql/log

下载安装包并解压

下载安装包

PostgreSQL官网下载地址:https://www.enterprisedb.com/downloads/postgres-postgresql-downloads,或https://www.postgresql.org/ftp/source/

国内镜像地址,阿里云:https://mirrors.aliyun.com/postgresql/source/

centos x86_64下载地址参考示例:

wget https://ftp.postgresql.org/pub/source/v17.2/postgresql-17.2.tar.gz
安装包完整性检查

对比完整性检查码是否一致

# 获取完整性检查码
wget https://ftp.postgresql.org/pub/source/v17.2/postgresql-17.2.tar.gz.sha256
cat postgresql-17.2.tar.gz.sha256
# 检查安装包
sha256sum postgresql-17.2.tar.gz
解压安装包
tar -zxf postgresql-17.2-docs.tar.gz

编译安装

# 进入解压后的目录
cd postgresql-17.2

# 进行编译配置,此处配置的--prefix的内容就是上面创建好的‘数据库安装目录’
./configure --prefix=/home/install_user/pgsql

# 编译源码,其中-j是开启多线程编译,加快编译速度
make -j 4

# 安装
make -j 4 install

配置环境变量

修改安装用户home目录下的.bashrc文件,配置PostgreSQL的环境变量

# 编辑文件
vi ~/.bashrc

# 添加环境变量
export PGHOME=/home/install_user/pgsql
export PATH=$PGHOME/bin:$PATH
export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
export PGDATA=/home/install_user/pgsql/data
export PGHOST=/home/install_user/pgsql/tmp
export PGPORT=5432

# ESC保存退出
:wq

# 加载环境变量
source ~/.bashrc

初始化数据库

如果上一步环境变量配置成功,此处可以直接执行如下命令

initdb -D /home/install_user/pgsql/data
# 或
initdb -D $PGDATA

如果没有配置成功,执行上述命令报错命令未找到,就得切换到安装目录的bin目录下,执行如下命令

./initdb -D /home/install_user/pgsql/data

修改数据库配置

配置临时文件目录

修改数据目录下的postgresql.conf配置文件

# 切换到数据目录下
cd $PGDATA

# 编辑配置文件
vi postgresql.conf

# 修改如下配置项的值
# 配置端口号
port = 5432
# 配置套接字目录
unix_socket_directories = '/home/install_user/pgsql/tmp'
# 启用日志收集,并设置日志文件地址
logging_collector = on
log_directory = '/home/install_user/pgsql/log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_file_mode = 0600
log_rotation_size = 10MB

# ESC保存退出
:wq

启停PostgreSQL服务

此后的命令均只提供环境变量配置成功情况的命令,未配置成功,请在安装目录的bin目录下执行,并自行替换$变量

pg_ctl -D $PGDATA start

其中,-D参数为数据目录。

停止的命令为:

pg_ctl -D $PGDATA stop

连接到数据库

# 使用如下命令连接到数据库
psql -d postgres
psql -h localhost -p 5432 -d postgres

# 使用如下命令查询当前已有用户,可以看到与服务器安装用户同名的用户
\du

# 修改安装用户密码
alter user install_user with password 'Sample@123';

# 使用如下命令退出连接
\q

配置支持远程连接

修改postgresql.conf配置文件

# 切换到数据目录下
cd $PGDATA

# 编辑配置文件
vi postgresql.conf

# 修改如下配置项的值
listen_addresses = '*'

# ESC保存退出
:wq

修改pg_hba.conf配置文件

# 切换到数据目录下
cd $PGDATA

# 编辑配置文件
vi pg_hba.conf

# 添加以下行
host all all 0.0.0.0/0 scram-sha-256

# ESC保存退出
:wq

重启PostgreSQL服务

重启服务,使配置生效。

测试远程连接

使用以下命令测试连接:

psql -h <server_ip> -U install_user -d postgres

其中,<server_ip>:PostgreSQL 服务器的 IP 地址。

输入密码后,如果一切配置正确,能够成功连接到 PostgreSQL 数据库。

创建管理员用户

# 使用如下命令连接到数据库
psql -d postgres

# 创建登录用户
CREATE ROLE admin_user WITH LOGIN PASSWORD 'Sample@123';

# 提升用户为超级用户
ALTER ROLE admin_user SUPERUSER;
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐