PostgreSQL单机编译安装手册

PostgreSQL单机编译安装手册

🌻下载二进制安装包:https://www.postgresql.org/ftp/source/

准备工作

bash 复制代码
# 检查是否已安装
rpm -qa | grep postgres

# 创建安装用户
groupadd postgres
useradd -g postgres -d /home/postgres -s /bin/bash postgres

# 创建安装目录
mkdir /opt/postgres
mv postgresql-9.2.4.tar.gz /opt/postgres
chown -R postgres:postgres /opt/postgres

编译安装

编译安装:

bash 复制代码
yum install -y zlib-devel gcc make

cd /opt/postgres
tar -xvf postgresql-9.2.4.tar.gz

cd postgresql-9.2.4/
./configure

make && make install

添加环境变量:

bash 复制代码
chown -R postgres:postgres /opt/postgres
su - postgres

echo 'export PATH=$PATH:/usr/local/pgsql/bin' >> .bash_profile
echo 'export PGDATA=/pgdata' >> .bash_profile
echo 'export PGLOG=/pgdata/server.log' >> .bash_profile

source .bash_profile

初始化数据库

创建数据目录,初始化数据库:

bash 复制代码
# 创建数据目录
mkdir /pgdata
chown -R postgres:postgres /pgdata

# 以postgres用户初始化数据库
su - postgres
initdb -D /pgdata -U postgres

# 启动数据库
pg_ctl -D /pgdata -l /pgdata/server.log start

检查数据库日志、端口和进程:

bash 复制代码
[postgres@dbhost ~]$ tail -f /pgdata/server.log 
LOG:  could not bind IPv4 socket: Address already in use
HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
LOG:  database system was shut down at 2023-10-10 11:03:49 CST
LOG:  database system is ready to accept connections
LOG:  autovacuum launcher started
^C
[postgres@dbhost ~]$ ss -antpl | grep 5432
LISTEN     0      208    127.0.0.1:5432                     *:*                   users:(("postgres",pid=68688,fd=4))
LISTEN     0      208      [::1]:5432                  [::]:*                   users:(("postgres",pid=68688,fd=3))

[postgres@dbhost ~]$ ps -ef | grep postgres
root      68464  53923  0 11:03 pts/0    00:00:00 su - postgres
postgres  68465  68464  0 11:03 pts/0    00:00:00 -bash
postgres  68688      1  0 11:05 pts/0    00:00:00 /usr/local/pgsql/bin/postgres -D /pgdata
postgres  68702  68688  0 11:05 ?        00:00:00 postgres: checkpointer process   
postgres  68703  68688  0 11:05 ?        00:00:00 postgres: writer process   
postgres  68704  68688  0 11:05 ?        00:00:00 postgres: wal writer process   
postgres  68705  68688  0 11:05 ?        00:00:00 postgres: autovacuum launcher process   
postgres  68706  68688  0 11:05 ?        00:00:00 postgres: stats collector process   
postgres  68772  68465  0 11:06 pts/0    00:00:00 ps -ef
postgres  68773  68465  0 11:06 pts/0    00:00:00 grep --color=auto postgres

使用psql命令连接到数据库:

bash 复制代码
[postgres@dbhost ~]$ psql
psql (9.2.4)
Type "help" for help.

postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(3 rows)

postgres=# \c postgres
You are now connected to database "postgres" as user "postgres".
postgres=# \d
No relations found.
postgres=# \dS
                        List of relations
   Schema   |              Name               | Type  |  Owner   
------------+---------------------------------+-------+----------
 pg_catalog | pg_aggregate                    | table | postgres
 pg_catalog | pg_am                           | table | postgres
 pg_catalog | pg_amop                         | table | postgres
 pg_catalog | pg_amproc                       | table | postgres
 pg_catalog | pg_attrdef                      | table | postgres
 pg_catalog | pg_authid                       | table | postgres
 pg_catalog | pg_available_extension_versions | view  | postgres
 pg_catalog | pg_available_extensions         | view  | postgres
...
postgres=# 
postgres=# \q

修改配置文件

PostgreSQL的数据库配置文件是位于数据目录下的postgresql.confpg_hba.conf

bash 复制代码
# 修改共享内存为服务器物理内存的25%
[postgres@dbhost ~]$ cat /pgdata/postgresql.conf | grep shared_buffer
shared_buffers = 32MB            # min 128kB
#wal_buffers = -1            # min 32kB, -1 sets based on shared_buffers

[postgres@dbhost ~]$ vi /pgdata/postgresql.conf 
[postgres@dbhost ~]$ cat /pgdata/postgresql.conf | grep shared_buffer
shared_buffers = 1024MB            
#shared_buffers = 32MB            # min 128kB
#wal_buffers = -1            # min 32kB, -1 sets based on shared_buffers

# 修改监听地址
[postgres@dbhost ~]$ cat /pgdata/postgresql.conf | grep -n listen
59:#listen_addresses = 'localhost'        # what IP address(es) to listen on;

[postgres@dbhost ~]$ vi /pgdata/postgresql.conf 
[postgres@dbhost ~]$ cat /pgdata/postgresql.conf | grep -n listen
59:listen_addresses = '*'                # 添加此行
60:#listen_addresses = 'localhost'        # what IP address(es) to listen on;

# 添加允许连接的客户端地址
[postgres@dbhost ~]$ cat /pgdata/pg_hba.conf | grep -A2 'IPv4 local connections'
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:

[postgres@dbhost ~]$ vi /pgdata/pg_hba.conf 
[postgres@dbhost ~]$ cat /pgdata/pg_hba.conf | grep -A2 'IPv4 local connections'
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all             all             0.0.0.0/0               trust      # 添加此行

重启数据库:

bash 复制代码
echo $PGDATA
pg_ctl stop
pg_ctl -D $PGDATA -l $PGLOG start

检查配置参数:

sql 复制代码
postgres=# show data_directory;
 data_directory 
----------------
 /pgdata
(1 row)

postgres=# show shared_buffers;
 shared_buffers 
----------------
 1GB
(1 row)

postgres=# select name,setting from pg_settings where name='data_directory';
      name      | setting 
----------------+---------
 data_directory | /pgdata
(1 row)
相关推荐
李宥小哥34 分钟前
结构型设计模式2
网络·数据库·设计模式
猫头虎43 分钟前
永久免费白嫖多个域名,一键托管Cloudflare,免费申请SSL加密证书,轻松建站、搭建线路伪装
服务器·开发语言·网络·数据库·python·网络协议·ssl
真正的醒悟1 小时前
什么是安全设备组网
服务器·数据库·php
小哈里2 小时前
【软考架构】2025H2系统架构设计师考试复习.jpg(软件架构、软件工程、数据库、Web开发、高项)
数据库·架构·系统架构·软件工程·后端开发
B站_计算机毕业设计之家2 小时前
深度学习:Yolo水果检测识别系统 深度学习算法 pyqt界面 训练集测试集 深度学习 数据库 大数据 (建议收藏)✅
数据库·人工智能·python·深度学习·算法·yolo·pyqt
赵文宇4 小时前
站在MySQL肩膀上快速入门PostgreSQL,开源社区最喜爱的关系数据库
mysql·postgresql
wei_shuo4 小时前
全场景自动化 Replay 技术:金仓 KReplay 如何攻克数据库迁移 “难验证“ 难题
数据库·自动化·king base
葡萄城技术团队4 小时前
打破误解!MongoDB 事务隔离级别深度实测:快照隔离竟能防住 8 种异常?
数据库
Gold Steps.4 小时前
数据库正常运行但是端口变成了0?
数据库·mysql
杂亿稿4 小时前
增删改查操作
数据库