centos8安装postgresql12 及 pgadmin4

centos8安装postgresql 及 pgadmin4

  • 安装postgresql12
    • 其他常用命令
  • 安装 pgadmin4

 
 
 
 
 
 
 
 

https://www.cnblogs.com/gispathfinder/p/13054284.html

安装postgresql12

1、下载并安装PostgreSQL官方yum源配置文件

# 安装 rpm 仓库
dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

 
 

2、禁用系统内置yum源的PostgreSQL安装模块

PostgreSQL官方的yum源配置文件提供了PostgreSQL12/11/10/9.6/9.5共5个版本的配置信息,一般情况下我们只使用计划安装版本的配置信息,禁用不需要的配置信息可以提高下载速度。要安装12版,可以禁用11/10/9.6/9.5版的配置信息,以及禁用系统内置yum源的PostgreSQL安装模块

sudo dnf module list postgresql

sudo dnf config-manager --disable pgdg11

sudo dnf config-manager --disable pgdg10

sudo dnf config-manager --disable pgdg96

sudo dnf config-manager --disable pgdg95

sudo dnf module disable postgresql

 
 

3、安装PostgreSQL12的客户端和服务器端程序

sudo dnf install -y postgresql12

sudo dnf install -y postgresql12-server

sudo dnf install -y postgresql12-contrib

 
 

注意:程序安装目录是"/usr/pgsql-12",程序运行目录是"/var/run/postgresql",程序运行用户和组是"postgres:postgres","postgres"用户和组安装时默认创建。

 
 

4、设置数据库实例的数据存储目录

数据库实例的默认数据存储目录是"/var/lib/pgsql/12/data/"。"/var"是一个系统目录,不宜存放大量业务数据。因此需要在初始化数据库实例之前设置数据存储目录。

 

创建数据存储目录

sudo mkdir /data/pgsql12-data

 

设置数据存储目录的所有者用户和组为"postgres:postgres","postgres"用户和组在安装PostgreSQL12时已创建

sudo chown postgres:postgres /data/pgsql12-data

 

修改PostgreSQL12开机启动服务配置文件,设置为新的数据存储目录

sudo vim /usr/lib/systemd/system/postgresql-12.service

修改 Environment=PGDATA=/data/pgsql12-data/

[Unit]
Description=PostgreSQL 12 database server
Documentation=https://www.postgresql.org/docs/12/static/
After=syslog.target
After=network.target

[Service]
Type=notify

User=postgres
Group=postgres

# Location of database directory
# Environment=PGDATA=/var/lib/pgsql/12/data/
Environment=PGDATA=/data/pgsql12-data/

# This is normally controlled by the global default set by systemd
# StandardOutput=syslog

# Disable OOM kill on the postmaster
OOMScoreAdjust=-1000
Environment=PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj
Environment=PG_OOM_ADJUST_VALUE=0

ExecStartPre=/usr/pgsql-12/bin/postgresql-12-check-db-dir ${PGDATA}
ExecStart=/usr/pgsql-12/bin/postmaster -D ${PGDATA}
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT


# Do not set any timeout value, so that systemd will not kill postmaster
# during crash recovery.
TimeoutSec=0

[Install]
WantedBy=multi-user.target

 
 

5、初始化数据库实例

进入程序安装目录下的"bin"目录下,执行"postgresql-12-setup initdb"命令。

cd /usr/pgsql-12/bin

sudo ./postgresql-12-setup initdb

 
 

6、 启动数据库实例服务,并设置为开机自动启动

systemctl enable postgresql-12.service

systemctl start postgresql-12.service

 
 

7、设置数据库实例超级管理员账户"postgres"的口令

PostgreSQL12安装完成后"postgres"的默认口令为空,为空时无法使用该用户登录数据库。

passwd postgres

su postgres

bash-4.4$ psql
psql (12.3)
Type "help" for help.

postgres=# alter user postgres with password 'gis';
ALTER ROLE
postgres=# \q
bash-4.4$ exit

 
 

8、 设置数据库实例的远程访问策略

PostgreSQL12安装完成后默认只允许本地访问设置。

数据库实例访问策略,可以设置多个由主机类型、数据库、用户、IP地址组成的策略。

vim /data/pgsql12-data/pg_hba.conf

 
 

9、在文件的"# IPv4 local connections"策略中追加一条“允许全部用户,通过全部网络地址访问全部数据库”的策略并保存,策略定义如下:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
host    all             all             0.0.0.0/0               md5
# 追加一条“允许全部用户,通过全部网络地址访问全部数据库”的策略
host    all             all             0.0.0.0/0               trust
# IPv6 local connections:
host    all             all             ::1/128                 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            ident
host    replication     all             ::1/128                 ident

 
 

10、设置数据库实例监听地址和端口

监听地址,"*“表示全部地址,默认是"localhost”

监听端口,默认是"5432"

vim  /data/pgsql12-data/postgresql.conf
listen_addresses = '*'          # defaults to 'localhost'; use '*' for all

port = 5432                             # (change requires restart)

 
 

11、设置防火墙端口

CentOS8默认安装firewall防火墙,允许"5432"端口(PostgreSQL默认端口)访问服务器

firewall-cmd --zone=public --add-port=5432/tcp --permanent

firewall-cmd --reload

 
 

12、重新启动数据库服务实例

systemctl restart postgresql-12.service

 
 
 
 

其他常用命令

将从属节点提升为主要节点

systemctl status postgresql-12.service

su postgres

bash-4.4$ rm -rf /data/pgsql12-data/*

bash-4.4$ /usr/pgsql-12/bin/pg_ctl -D /data/pgsql12-data promote

bash-4.4$ exit

 
 

备份数据库(包含创建数据库)

sudo -u postgres /usr/pgsql-12/bin/pg_dump -C db_name > db_bak.sql

 
 

备份数据库内容(不含创建数据库)

sudo -u postgres /usr/pgsql-12/bin/pg_dump db_name > db_content_bak.sql

 
 

备份数据库架构(命名空间/模式)和内容(包含创建数据库架构

sudo -u postgres /usr/pgsql-12/bin/pg_dump -n "schema_name" db_name > schema_bak.sql

 
 

备份表内数据(不含创建表结构)

sudo -u postgres /usr/pgsql-12/bin/pg_dump -a -t "schema_name.table_name" db_name > table_content_bak.sql

 
 

恢复数据库及其内容(数据库不存在)

sudo -u postgres /usr/pgsql-12/bin/psql -e < db_bak.sql

 
 

恢复数据库内容(数据库必须已存在,且库中不存在备份文件中将要的创建的对象)

sudo -u postgres /usr/pgsql-12/bin/psql -e db_name < db_bak.sql

 
 
 
 
 
 
 
 

安装 pgadmin4

https://www.daehub.com/archives/9543.html

 
# 安装EPEL
sudo dnf install -y epel-release
sudo dnf --enablerepo=PowerTools install -y pgadmin4
 
# 开启http
sudo systemctl start httpd
sudo systemctl enable httpd
sudo systemctl status httpd

 
 

pgAdmin 是一套使用 Python 3 开发的 Web 应用程序,软件包中包含了示例配置文件,使用如下命令启用 pgAdmin 的示例配置文件

sudo cp /etc/httpd/conf.d/pgadmin4.conf.sample /etc/httpd/conf.d/pgadmin4.conf

 
 

测试服务器是否启动成功

sudo httpd -t

 
 

创建 pgAdmin 的库目录以及日志目录

sudo mkdir -p /var/lib/pgadmin4/
sudo mkdir -p /var/log/pgadmin4/

 
 

目录创建完成后,就需要修改 pgAdmin 的配置文件”/usr/lib/python3.6/site-packages/pgadmin4-web/config_distro.py”,指定日志文件、SQLite数据库文件、会话文件以及存储目录的位置,修改文件为如下内容:

LOG_FILE = '/var/log/pgadmin4/pgadmin4.log'
SQLITE_PATH = '/var/lib/pgadmin4/pgadmin4.db'
SESSION_DB_PATH = '/var/lib/pgadmin4/sessions'
STORAGE_DIR = '/var/lib/pgadmin4/storage'

 
 

创建 pgAdmin 的管理帐户以及配置数据库

python3 /usr/lib/python3.6/site-packages/pgadmin4-web/setup.py

 
 

现在,修改相关目录的属主,以便 pgAdmin 网站可以进行读写操作:

sudo chown -R apache:apache /var/lib/pgadmin4
sudo chown -R apache:apache /var/log/pgadmin4

 
 

如果系统启用了 SELinux,则使用如下命令设置访问规则

sudo chcon -t httpd_sys_rw_content_t /var/log/pgadmin4 -R
sudo chcon -t httpd_sys_rw_content_t /var/lib/pgadmin4 -R
sudo setsebool -P httpd_can_network_connect 1

 
 

如果系统启用了 Firewalld 防火墙,则使用如下命令放行80和443端口

sudo firewall-cmd --permanent --zone public --add-port 80/tcp
sudo firewall-cmd --permanent --zone public --add-port 443/tcp
sudo firewall-cmd --reload

 
 

最后,重新启动 Apache 服务,让所有设置生效

sudo systemctl restart httpd

 
 

网站启动成功后,就可以通过浏览器访问如下地址进入管理界面:

http://SERVER_IP/pgadmin4
OR
http://localhost/pgadmin4

你可能感兴趣的:(centos,postgresql,postgresql,centos)