centos使用Yum安装postgresql 13

rpm源安装

yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

安装数据库

yum install -y postgresql13-server

数据库安装完成后,会自动创建一个linux用户 postgres

新建数据库数据存放目录

mkdir -p /home/pgsql/data
chown -R postgres.postgres /home/pgsql

初始化postgresql数据库

# 初始化数据 -D指定初始化创建的数据库的文件路径
# su postgres
bash-4.2$ /usr/pgsql-13/bin/initdb -D /home/pgsql/data
属于此数据库系统的文件宿主为用户 "postgres".
此用户也必须为服务器进程的宿主.
数据库簇将使用本地化语言 "zh_CN.UTF-8"进行初始化.
默认的数据库编码已经相应的设置为 "UTF8".
initdb: could not find suitable text search configuration for locale "zh_CN.UTF-8"
缺省的文本搜索配置将会被设置到"simple"

禁止为数据页生成校验和.

修复已存在目录 /home/pgsql/data 的权限 ... 成功
正在创建子目录 ... 成功
选择动态共享内存实现 ......posix
选择默认最大联接数 (max_connections) ... 100
选择默认共享缓冲区大小 (shared_buffers) ... 128MB
selecting default time zone ... Asia/Shanghai
创建配置文件 ... 成功
正在运行自举脚本 ...成功
正在执行自举后初始化 ...成功
同步数据到磁盘...成功

initdb: 警告: 为本地连接启用"trust"身份验证
你可以通过编辑 pg_hba.conf 更改或你下次
执行 initdb 时使用 -A或者--auth-local和--auth-host选项.

成功。您现在可以用下面的命令开启数据库服务器:

    /usr/pgsql-13/bin/pg_ctl -D /home/pgsql/data -l 日志文件 start

切换回root用户,配置启动项

su
vim /usr/lib/systemd/system/postgresql-13.service

# 修改一下启动数据存放目录
[Unit]
Description=PostgreSQL 13 database server
Documentation=https://www.postgresql.org/docs/13/static/
After=syslog.target
After=network.target

[Service]
Type=notify

User=postgres
Group=postgres

# Note: avoid inserting whitespace in these Environment= lines, or you may
# break postgresql-setup.

# Location of database directory
# Environment=PGDATA=/var/lib/pgsql/13/data/
Environment=PGDATA=/home/pgsql/data/

# 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
Environment=PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj
Environment=PG_OOM_ADJUST_VALUE=0

ExecStartPre=/usr/pgsql-13/bin/postgresql-13-check-db-dir ${PGDATA}
ExecStart=/usr/pgsql-13/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

# 0 is the same as infinity, but "infinity" needs systemd 229
TimeoutStartSec=0

TimeoutStopSec=1h

[Install]
WantedBy=multi-user.target

启动

systemctl daemon-reload
systemctl start postgresql-13.service
# 开机启动
systemctl enable postgresql-13.service

登录

postgresql默认要切换到postgres用户才能登陆数据库

# 切换用户
su postgres
# 登录数据库
psql -U postgres
# 添加密码
Alter USER postgres WITH PASSWORD 'postgres';
ALTER ROLE        //出现这个才算成功

# su postgres
bash-4.2$ psql -U postgres
psql (13.5)
输入 "help" 来获取帮助信息.

postgres=# Alter USER postgres WITH PASSWORD 'postgres';
ALTER ROLE
postgres=# exit
bash-4.2$ exit
exit

修改远程链接配置文件参数

vim /home/pgsql/data/postgresql.conf

# 修改为 *
listen_addresses = '*'

vim /home/pgsql/data/pg_hba.conf
host    all     all      0.0.0.0/0      trust  # 新增这一行,否则连接时会报错:Error connecting to the server:致命错误:没有用于主机“…”,用户“…”,数据库“…”,SSL关闭的pg_hba.conf记录:

# 重启数据库生效
systemctl restart postgresql-13.service
原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/15769935.html