CentOS7 部署 PostgreSQL

2024-08-07 12:42:23 浏览数 (1)

编译安装

创建用户和组

代码语言:javascript复制
useradd postgres
groupadd postgres
mkdir -pv /usr/local/postgresql/logs
mkdir -pv /data/postgres 
chown -R postgres.postgres /usr/local/postgresql/
chown -R postgres.postgres /data/postgres

编译安装

代码语言:javascript复制
./configure --prefix=/usr/local/postgresql/ --without-readline
make && make install

配置环境变量

代码语言:javascript复制
vim /etc/porfile.d/postgresql.sh

export PGHOME=/usr/local/postgresql
export PGDATA=/data/postgres
export PGLIB=/usr/local/postgresql/lib
export PATH=$PGHOME/bin:$PATH

source /etc/porfile.d/postgresql.sh 

初始化数据库

代码语言:javascript复制
su - postgres
initdb -D /data/postgres/

启动 postgresql

代码语言:javascript复制
pg_ctl -D /data/postgres/ -l /usr/local/postgresql/logs/logfile start

创建启动脚本

代码语言:javascript复制
vim /usr/lib/systemd/system/postgresql.service

[Unit]
Description=PostgreSQL database server
After=network.target

[Service]
Type=forking

User=postgres
Group=postgres

# Port number for server to listen on
Environment=PGPORT=5432

# Location of database directory
Environment=PGDATA=/data/postgres

# Where to send early-startup messages from the server (before the logging
# options of postgresql.conf take effect)
# This is normally controlled by the global default set by systemd
# StandardOutput=syslog

# Disable OOM kill on the postmaster
OOMScoreAdjust=-1000

#ExecStartPre=/usr/local/postgresql/bin/postgresql-check-db-dir ${PGDATA}
ExecStart=/usr/local/postgresql/bin/pg_ctl start -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300
ExecStop=/usr/local/postgresql/bin/pg_ctl stop -D ${PGDATA} -s -m fast
ExecReload=/usr/local/postgresql/bin/pg_ctl reload -D ${PGDATA} -s

# Give a reasonable amount of time for the server to start up/shut down
TimeoutSec=300

[Install]
WantedBy=multi-user.target

脚本启动

代码语言:javascript复制
systemctl daemon-reload
systemctl enable postgresql
systemctl start postgresql

配置

代码语言:javascript复制
# 修改访问控制配置文件
vim /data/postgres/pg_hba.conf
	host	all		all		0.0.0.0/0		md5

# md5 表示加密方式,需要密码访问
# 加密方式:
ident:是Linux下PostgreSQL默认的local认证方式,凡是能正确登录服务器的操作系统用户(注:不是数据库用户)就能使用本用户映射的数据库用户不需密码登录数据库
trust:是只要知道数据库用户名就不需要密码或ident就能登录,建议不要在生产环境中使用
md5:是常用的密码认证方式,如果你不使用ident,最好使用md5。密码是以md5形式传送给数据库,较安全,且不需建立同名的操作系统用户
password:是以明文密码传送给数据库,建议不要在生产环境中使用
reject:拒绝认证

# 修改主配置文件
vim /data/postgres/postgres.conf
	listen_addresses = "*"		# 改为*表示监听整个网络

连接数据库

代码语言:javascript复制
[root@localhost ~]# psql -U postgres 
[root@localhost ~]# psql -h 127.0.0.1 -d postgres -U postgres 			//默认登录名是postgres
[root@localhost ~]# alter user postgres with password '123456';			//设置数据库密码

yum 安装

安装源

代码语言:javascript复制
yum install http://download.postgresql.org/pub/repos/yum/12/redhat/rhel-7.5-x86_64/pgdg-redhat-repo-42.0-11.noarch.rpm

安装服务端

代码语言:javascript复制
yum install postgresql12-server

查看安装位置

代码语言:javascript复制
rpm -qal | grep postgresql 			# 默认安装在/var/lib/pgsql/11/data/目录下

安装客户端

代码语言:javascript复制
yum install postgresql12

创建数据目录,修改权限

代码语言:javascript复制
mkdir -pv /data/pgsql/
mkdir /var/log/postgres
chown -R postgres.postgres /data/pgsql/
		
touch /var/log/postgres/postgres.log 
chown -R postgres.postgres /var/log/postgres

初始化数据库

代码语言:javascript复制
su - postgres 
/usr/pgsql-11/bin/initdb -E UNICODE -D /data/pgsql/

修改配置文件

代码语言:javascript复制
# 修改主配置文件
vim /mnt/data/postgresql.conf
	listen_addresses = '*'
	
# 修改访问控制配置文件
vim /mnt/data/pg_hba.conf
	host    all        all        0.0.0.0/0          md5
	
# 修改数据目录
vim /usr/lib/systemd/system/postgresql-12.service
	Environment=PGDATA=/data/pgsql/

启动

代码语言:javascript复制
systemctl start postgresql-12

连接测试

代码语言:javascript复制
psql -U postgres -h localhost -p 5432

常用操作命令

代码语言:javascript复制
# 连接数据库
psql -U postgres -h localhost -p 5432
		
# 列出所有数据库
l 
		
# 进入某个数据库
c 数据库名
		
# 列出所有表
d 
		
# 列出表结构
d 表名
		
# 退出 
q 
		
# 导出数据库 
pg_dump -U postgres -h localhost -p 5432 数据库名 > /path/to/name
		
# 删除数据库
drop database 数据库名
		
# 导入
psql -U postgres -h localhost -p 5432 数据库名 < /path/to/name 
		
		
# 创建用户和数据库并授权
create user 用户名 with password '密码';
create database "数据库名";
grant all privileges on database 数据库名 to 用户名;

0 人点赞