编译安装
创建用户和组
代码语言: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 用户名;