PostgreSQL【安装篇】01:CentOS7.5【手动】编译安装PostgreSQL17.4

一、环境准备

1、环境信息

192.168.184.181  centos7

在这里插入图片描述

2、官网获取在线安装脚本

https://www.postgresql.org/

(1)选择对应的操作系统

在这里插入图片描述
例如,选择Linux
在这里插入图片描述

(2)获取安装脚本

在这里插入图片描述

(3)安装脚本如下

# Install the repository RPM:
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# Install PostgreSQL:
sudo yum install -y postgresql14-server

# Optionally initialize the database and enable automatic start:
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
sudo systemctl enable postgresql-14
sudo systemctl start postgresql-14

3、官网获取离线安装包

https://www.postgresql.org/download/

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、也可以在镜像网站进行下载

如果官网下载慢的话,也可以在镜像网站下载

https://mirrors.tuna.tsinghua.edu.cn/postgresql/source/v17.5/

在这里插入图片描述

5、网盘地址

我这里提供17.4和17.5版本

链接: https://pan.baidu.com/s/1rMfFUkFpjngSqDWEc2tESw?pwd=rfit
提取码: rfit 

二、安装PostgreSQL17.4

这里有两种安装方式,一种是在线安装,一种是离线安装,我习惯离线安装,有网的话也可以进行在线安装。

1、上传安装包

cd /root/
ll

在这里插入图片描述

2、解压安装包

cd /root/
tar -xf postgresql-17.4.tar.gz
ll

在这里插入图片描述

3、安装依赖

yum -y install gcc gcc-c++ make libicu-devel bison flex readline-devel zlib-devel

在这里插入图片描述

4、编译安装

cd /root/
cd postgresql-17.4/
./configure --prefix=/usr/local/pgsql
make
make install

在这里插入图片描述

5、添加数据库用户,并创建数据存储目录

useradd postgres
passwd  postgres
mkdir /usr/local/pgsql/data
chown postgres:postgres /usr/local/pgsql/data

这里我设置的postgres用户密码也是postgres
在这里插入图片描述

6、配置环境变量

vim /etc/profile.d/pgsql.sh

添加如下内容

export PGHOME=/usr/local/pgsql
export PGDATA=/usr/local/pgsql/data
export PATH=$PGHOME/bin:$PATH

在这里插入图片描述
使用环境变量生效

source /etc/profile.d/pgsql.sh

在这里插入图片描述

7、 系统参数优化

vim /etc/sysctl.conf

添加以下内容

vm.nr_hugepages = 6144

在这里插入图片描述
使用参数生效

sysctl -p

在这里插入图片描述

8、初始化数据库

(1)切换到postgres用户

su - postgres

在这里插入图片描述

(2)执行数据初始化

/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

在这里插入图片描述

(3)退出postgres用户

exit

在这里插入图片描述

9、修改配置文件

vim /usr/local/pgsql/data/postgresql.conf

修改以下配置:

listen_addresses = '*'
max_connections = 300
shared_buffers = 2GB
work_mem = 32MB
maintenance_work_mem = 1GB
effective_cache_size = 12GB
wal_buffers = 8MB
checkpoint_completion_target = 0.9

参数解释:

1、listen_addresses:
	监听地址,默认使用localhost,使用'*'表示所有
2、max_connections:
	决定允许的最大数据库连接数。
	过多的连接会增加系统开销和资源竞争。
	通常可以使用连接池工具(如PgBouncer)来控制并发连接数;
3、shared_buffers:
	这是PostgreSQL用于缓存表数据的共享内存区域,通常建议设置为物理内存的25%-40%。
	如果设置过低,会导致频繁的磁盘访问;设置过高则会占用操作系统内存,减少可用的文件缓存;
4、work_mem:
	每个查询操作(如排序、哈希表)所使用的内存。
	这个参数是每个查询连接单独分配的,因此需要根据查询复杂度和并发量合理设置。
	如果过小,查询需要频繁进行磁盘交换;过大会导致内存不足。
	典型值在10MB-100MB之间;
5、maintenance_work_mem:
	控制PostgreSQL在执行维护操作时使用的内存大小,比如创建索引、VACUUM。推荐设置为较大的值,尤其是在大规模数据集上操作时;
6、effective_cache_size:
	PostgreSQL根据此参数判断系统可用的文件系统缓存大小,从而决定是否使用索引扫描或全表扫描。
	建议设置为物理内存的50%-75%;
7、wal_buffers:
	建议设置为shared_buffers的1/32,用于缓冲WAL数据,避免频繁写入磁盘;
8、checkpoint_completion_target:
	设置为接近1的值可以平滑WAL日志写入压力,减少突发I/O操作。

(1)listen_addresses

在这里插入图片描述

(2)max_connections

在这里插入图片描述

(3)shared_buffers

在这里插入图片描述

(4)work_mem

在这里插入图片描述

(5)maintenance_work_mem

在这里插入图片描述

(6)effective_cache_size

在这里插入图片描述

(7)wal_buffers

在这里插入图片描述

(8)checkpoint_completion_target

在这里插入图片描述

10、启动服务

(1)使用自带脚本方式启动

复制源码包里的脚本至etc/init.d目录下,并加执行权限

cd /root/postgresql-17.4
cp ./contrib/start-scripts/linux /etc/init.d/postgresql
chmod +x /etc/init.d/postgresql
chown -R postgres:postgres /usr/local/pgsql

在这里插入图片描述
启动服务

su - postgres
service postgresql start
service postgresql status

输入密码:

postgres

在这里插入图片描述
设置开机启动

chkconfig --add postgresql

(2)使用systemd进行管理

vim /etc/systemd/system/postgresql.service
[Unit]
Description=PostgreSQL database server
Documentation=man:postgres(1)
After=network-online.target

[Service]
Type=forking
User=postgres
Group=postgres
Environment=PGDATA=/usr/local/pgsql/data
ExecStart=/usr/local/pgsql/bin/pg_ctl start -D ${PGDATA}
ExecStop=/usr/local/pgsql/bin/pg_ctl stop -D ${PGDATA} -m fast
ExecReload=/home/postgres/bin/pg_ctl reload -D ${PGDATA}
TimeoutSec=300s

[Install]
WantedBy=multi-user.target

在这里插入图片描述

systemctl daemon-reload
systemctl start postgresql
systemctl status postgresql

在这里插入图片描述

(3)直接使用命令行启动

su - postgres
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile status

在这里插入图片描述

三、常用操作

1、登录数据库

(1)切换到postgres用户

su - postgres
psql

在这里插入图片描述

(2)或在root用户下使用以下命令

psql -U postgres

在这里插入图片描述

2、查看当前连接用户

\c
select user;
select current_user;
select current_database();

在这里插入图片描述

3、创建数据库

create database mydb;

在这里插入图片描述

4、切换数据库

\c mydb

在这里插入图片描述

\l 列举数据库
\dt 列举表
\d tblname 查看表结构
\di 查看索引

5、创建角色与用户并授权

PostgreSQL使用角色的概念管理数据库访问权限。一个角色可以被看成是一个数据库用户或者是一个数据库用户组,这取决于角色被怎样设置。角色可以拥有数据库对象(例如,表和函数)并且能够把那些对象上的权限赋予给其他角色来控制谁能访问哪些对象。此外,还可以把一个角色中的成员资格授予给另一个角色,这样允许成员角色使用被赋予给另一个角色的权限。

角色的概念把“用户”和“组”的概念都包括在内。在PostgreSQL版本 8.1 之前,用户和组是完全不同的两种实体,但是现在只有角色。任意角色都可以扮演用户、组或者两者。

(1)创建用户

CREATE USER pgtest1 with password 'admin';

在这里插入图片描述
CREATE USER等同于CREATE ROLE, 但CREATE USER默认包含LOGIN,而CREATE ROLE不包含。
如下两者等价,创建具有登录权限的角色:

CREATE ROLE pgtest2 with password 'admin' LOGIN;
CREATE USER pgtest3 with password 'admin';

在这里插入图片描述

(2)查看用户

查看角色信息

\du
\du+ 
select * from pg_roles;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(3)创建schema(与用户名同名【租户】)

\c mydb;
create schema pgtest1;
create schema pgtest2;
create schema pgtest3;

在这里插入图片描述

(4)授权

授权用户的schema所有权限

GRANT ALL PRIVILEGES ON SCHEMA pgtest1 TO  pgtest1;
GRANT ALL PRIVILEGES ON SCHEMA pgtest2 TO  pgtest2;
GRANT ALL PRIVILEGES ON SCHEMA pgtest3 TO  pgtest3;

在这里插入图片描述

(5)回收权限

REVOKE ALL PRIVILEGES ON SCHEMA pgtest3 FROM pgtest3;

在这里插入图片描述

6、普通用户登录

psql -U pgtest1 -d mydb

在这里插入图片描述

四、配置远程访问

1、 编辑配置

su - postgres
vim /usr/local/pgsql/data/pg_hba.conf

添加如下内容:

#添加以下内容,管理员用户postgres不允许远程连接
host    all             postgres        0.0.0.0/0               reject
host    all             all             0.0.0.0/0               password

在这里插入图片描述

2、重启数据库

service postgresql restart

在这里插入图片描述

3、使用客户端工具进行连接

这里我使用navicat进行连接
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、注意

1、系统参数hugepages设置问题

如果hugepages设置超过当前设置的内存会出现如下的问题,例如,当前我的虚拟机设置的是4G内存,而hugepages设置超过4G的内存会出现系统无法登陆的问题,这个要注意!!

vim /etc/sysctl.conf

添加以下内容

vm.nr_hugepages = 6144

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做一个有趣的人Zz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值