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