Cenots7 离线安装部署PostgreSQL
PostgreSQL源码包下载并复制
PostgreSQL源码包下载
访问PostgreSQL官网:https://www.postgresql.org/ftp/source/
选择所需版本进行下载,本次下载安装版本为 v14.5
复制源码包至服务器
使用SSH终端工具,远程连接服务器,并使用终端工具提供的上传工具,把
postgresql-14.5.tar.gz
上传至服务器/home/postgres14.5
文件夹下
建目录文件夹的命令
[root@localhost local]# mkdir -p /home/postgres14.5
基于PostgreSQL源码安装
切换到源码目录
[root@localhost local]# cd /home/postgres14.5
解压gz
[root@localhost postgres14.5]# gunzip postgresql-14.5.tar.gz
解压tar
[root@localhost postgres14.5]# tar -xf postgresql-14.5.tar
检查环境 指定安装路径
检查环境,指定安装目录和服务端口
[root@localhost postgresql14.5]# cd postgresql-14.5
# 安装位置由 --prefix=/usr/local/pgsql-14.5中指定,端口号由 --with-pgport=5435 指定
[root@localhost postgresql14.5]# ./configure --prefix=/usr/local/pgsql-14.5 --with-pgport=5435
注意:使用configure脚本检查,无错误或警告提示方可进行下一步编译操作,若有错误或警告提示需根据提示进行相关操作。
安装时出现:configure:error:readline library not found
要安装 readline , readline-dev 开发包,要么使用 --without-readline 选项关闭 readline 功能。
# readline 也就是命令行编辑,关闭的话,你直接用psql 就不能编辑命令行,如果输错指令,不能回滚命令历史记录,只能手工重新输入。
yum install readline;
yum install readline-dev;
编译
[root@localhost postgresql-14.5]# make
安装
[root@localhost postgresql-14.5]# make install
postgresql的配置
创建用户和组
创建组
[root@localhost ~]# groupadd postgres
创建用户并加入组
[root@localhost pgsql-14.5]#useradd -g postgres postgres
创建数据库库文件存储目录、给postgres赋予权限
创建数据库库文件存储目录data
[root@localhost pgsql-14.5]# mkdir -p /run/media/postgres/data
data目录授权给postgres.postgres
[root@localhost pgsql-14.5]# chown postgres.postgres /run/media/postgres/data
初始化数据库目录
切换用户
[root@localhost pgsql-14.5]# su postgres
初始化数据 -D指定初始化创建的数据库的文件路径
[postgres@wc-ckg-99-2 root]$ /usr/local/pgsql-14.5/bin/initdb -D /run/media/postgres/data
红框中标注为postgres14.5的启动方式
/usr/local/pgsql-14.5/bin/pg_ctl -D /run/media/postgres/data -l logfile start
启动停止postgres14.5
启动
切换用户 PG是禁止使用超级管理员来运行该命令的
[root@localhost pgsql-14.5]# su postgres
启动数据库
# 启动
[postgres@wc-ckg-99-2 root]$ /usr/local/pgsql-14.5/bin/pg_ctl -D /run/media/postgres/data -l logfile start
# 停止
[postgres@wc-ckg-99-2 root]$ /usr/local/pgsql-14.5/bin/pg_ctl -D /run/media/postgres/data -l logfile stop
# 重启
[postgres@wc-ckg-99-2 root]$ /usr/local/pgsql-14.5/bin/pg_ctl -D /run/media/postgres/data -l logfile restart
执行启动命令权限不够
编辑sudoers配置文件 ,按下图红框所示,给postgres用户添加提升权限的配置
[root@localhost bin]# vi /etc/sudoers
强行停止后无法启动
删除运行目录
/run/media/postgres/data
下的postmaster.pid
文件
修改管理员密码
psql命令目录:
/usr/local/pgsql-14.5/bin
# 在/ usr / bin中创建一个postgre14.5版本对应的psql链接
[root@localhost bin]# ln -s /usr/local/pgsql-14.5/bin/psql /usr/bin/psql145
# 切换用户
[root@localhost bin]# su - postgres
# 执行命令
[postgres@wc-ckg-99-2 root]$ psql145
could not change directory to "/root": Permission denied
psql145 (14.5)
Type "help" for help.
# postgres=# 修改管理员密码,\q退出
postgres=# alter role postgres with password '123';
postgres=# \q;
开启远程访问
切换到数据库目录
[root@localhost bin]# cd /run/media/postgres/data
修改postgresql.conf 配置文件,开启远程访问
把
listen_addresses = 'localhost'
,修改成listen_addresses = '*'
[root@localhost data]# vi postgresql.conf
配置认证方式
修改/run/media/postgres/data/pg_hba.conf
添加远程访问的认证方式,未尾添加 host all all 0.0.0.0/0 md5
[root@localhost data]# vi pg_hba.conf
测试连接
基本语法
sql创建数据库、表增删改查都大同小异。
不同命令
执行sql文件
[root@localhost bin]# ./psql -U postgres -h localhost -p 5432 -d 数据库名 -f xxx.sql
创建数据库
# 创建以 utf-8 字符的数据库,并且以 template0 为模版创建
create database 数据库名 with owner = postgres template = template0 encoding = 'utf8';
# 给指定用户授指定数据库所有权限
grant all privileges on database 数据库名 to postgres;
执行登陆操作后提示
FATAL: role 'root' is not permitted to log in.
,运行命令alter user "root" login;
执行命令后提示Postgresql : syntax error at or near "-"
,将名字添加""
,eg:alter user "dell-sys" with password 'Pass@133';