# PostgreSQL数据库在Linux上的安装搭建(单例)

# 1. 环境信息

1. VMware Workstation Pro
2. CentOS-7-x86_64-Everything-2009
3. PostgreSQl 14.1

# 2. 问题

在 VMware 虚拟机中安装 PostageSQL 数据库(单例)

# 3. 操作步骤

# 3.1 虚拟机配置

1. 配置 VMware 虚拟机为NAT网络模式,共享物理机网络

2. 配置虚拟机的网络状态
	vi /etc/sysconfig/network-scripts/ifcfg-ens33 
	
3. 修改配置如下(配置完需要重启网络服务)
	TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=static
    DEFROUTE=yes
    IPADDR=192.168.6.177
    NETMASK=255.255.255.0
    NAME=ens33
    DNS1=223.5.5.5		 						#阿里yum源
    DNS2=8.8.8.8
    GATEWAY=192.168.6.2  						#NAT模式下的虚拟网卡网关
    UUID=96765599-1f43-4189-b998-b3f1ace198d1
    DEVICE=ens33
    ONBOOT=yes
    
4. 下载Cenos-7.repo到/etc/yum/repos.d/,并更名为CentOS-Base.repo
	curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
	
5. 本地缓存阿里源上的软件包信息
	yum makecache
	(注意:如果出现 timeout 报错,检查一下配置静态IP时,有没有配置DNS服务器,以及网关的配置)

# 3.2 添加数据库用户

groupadd postgres
useradd -g postgres postgres
passwd postgres

# 3.3 安装依赖

yum -y install lrzsz sysstat e4fsprogs ntp readline-devel zlib zlib-devel openssl openssl-devel pam-devel libxml2-devel libxslt-devel python-devel tcl-devel gcc make flex bison perl perl-devel perl-ExtUtils* OpenIPMI-tools systemtap-sdt-devel smartmontools libcurl vim wget systemd-devel

# 3.4 安装及修改配置文件

1. 下载解压PostgreSQL
	mkdir -p /opt/soft
	cd /opt/soft
    wget https://ftp.postgresql.org/pub/source/v14.1/postgresql-14.1.tar.gz --no-check-certificate												#跳过证书认证
    tar zxvf postgresql-14.1.tar.gz

2. 源码安装
    cd /opt/soft/postgresql-14.1
    ./configure --prefix=/usr/local/pgsql/14.1			# --prefix 指定安装路径
    make world -j32 && make install-world -j32			# make world 构建所有内容
    													# make install-world 安装数据库和文档

3. 开启调试
	./configure --prefix=/usr/local/pgsql/14.1/ --with-pgport=5432 --enable-dtrace --enable-debug	# --with-pgport 调整默认端口	--enable-dtrace 允许动态跟踪工具 DTrace	
				#--enable-debug 把所有程序和库以带有调试符号的方式编译

2. 创建数据库目录及权限配置
    mkdir -p /data/pgsql/14.1/pgdata
    chown -R postgres:postgres /data/pgsql
    chown -R postgres:postgres /usr/local/pgsql/14.1
    chmod -R 775 /usr/local/pgsql/14.1					# 775满权限

4. 添加局部环境变量(/home/postgres/.bashrc)
	export PGHOME=/usr/local/pgsql/14.1
    export PGPORT=5432						# 默认端口5432(记得修改postgresql.conf文件)
    export PGDATA=/data/pgsql/14.1/pgdata
    export DATE=`date +"%Y%m%d%H%M"`					# 日期格式
    export PGUSER=postgres
    export PGHOST=localhost
    export PGDATABASE=postgres
    export PATH=$PGHOME/bin:$PATH:.
    export MANPATH=$PGHOME/share/man:$MANPATH
    export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
    export LANG=en_US.utf8
    export PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj 		# 指定OOM调整文件
    export PG_OOM_ADJUST_VALUE=0							# 指定OOM分数值

5. 修改完后刷新环境变量
	source /home/postgres/.bashrc

6. 初始化
    su - postgres
    initdb -D /data/pgsql/14.1/pgdata -E UTF8 --locale=C -U postgres # 文件目录 编码 区域 用户

7.启动
	pg_ctl -D /data/pgsql/14.1/pgdata -l logfile start

# 4. 使用图形化工具连接数据库

# 4.1 修改配置文件

1. 修改pg_hba.conf文件
	vi /data/pgsql/14.1/pgdata/pg_hba.conf
	添加一条路由记录
	host	all		all		0.0.0.0/0	md5
	
2. 修改postgresql.conf文件
	vi /data/pgsql/14.1/pgdata/postgresql.conf
	listenaddress = '*'
	
3. 重启数据库服务
	pg_ctl restart

3. 本地登录psql修改密码
	/password

4. 防火墙放行5432端口
	firewall-cmd --permanent --add-service=http
	firewall-cmd --add-port=5432/tcp --permanent
	firewall-cmd --reload