centos7系统下postgresql15离线安装,卸载

1. 创建postgres用户

#[root@VMTest postgresql16]# useradd -g postgres postgres
[root@VMTest postgresql16]# useradd postgres

插曲:在线YUM安装

在线安装参考: PostgreSQL: Linux downloads (Red Hat family)

2. 下载并安装离线rpm包

2.1 从postgresql官网下载相应rpm离线安装包:

注意:

centos7只支持 rhel-7字眼的目录。

下载地址: Index of /pub/repos/yum/15/redhat/rhel-7.12-x86_64/

2.2 需要下载的安装包有:

libzstd-1.5.2-1.el7.x86_64.rpm
postgresql15-15.5-1PGDG.rhel7.x86_64.rpm
libicu-50.2-4.el7_7.x86_64.rpm(可能需要)
postgresql15-libs-15.5-1PGDG.rhel7.x86_64.rpm
postgresql15-server-15.5-1PGDG.rhel7.x86_64.rpm#其中, libicu-50.1.2-17.el7.x86_64.rpm的下载地址是
#https://centos.pkgs.org/7/centos-x86_64/libicu-50.1.2-17.el7.x86_64.rpm.html
# http://mirror.centos.org/centos/7/os/x86_64/Packages/libicu-50.2-3.el7.x86_64.rpm
http://mirror.centos.org/centos/7/os/x86_64/Packages/libicu-50.2-4.el7_7.x86_64.rpm# 下载
$. wget https://koji.xcp-ng.org/kojifiles/packages/zstd/1.5.2/1.el7/x86_64/libzstd-1.5.2-1.el7.x86_64.rpm$. wget https://download.postgresql.org/pub/repos/yum/15/redhat/rhel-7.12-x86_64/postgresql15-15.5-1PGDG.rhel7.x86_64.rpm$. wget http://mirror.centos.org/centos/7/os/x86_64/Packages/libicu-50.2-4.el7_7.x86_64.rpm$. wget https://download.postgresql.org/pub/repos/yum/15/redhat/rhel-7.12-x86_64/postgresql15-libs-15.5-1PGDG.rhel7.x86_64.rpm$. wget https://download.postgresql.org/pub/repos/yum/15/redhat/rhel-7.12-x86_64/postgresql15-server-15.5-1PGDG.rhel7.x86_64.rpm

2.3 安装下载的离线rpm包

将上述下载的rpm包上传到centos7上, 并使用rpm -ivh 进行安装:

[root@VMTest ~]# rpm -ivh libzstd-1.5.2-1.el7.x86_64.rpm
[root@VMTest ~]# rpm -ivh libicu-50.2-4.el7_7.x86_64.rpm
# 安装lib库
[root@VMTest ~]# rpm -ivh postgresql15-libs-15.5-1PGDG.rhel7.x86_64.rpm
# 安装客户端
[root@VMTest ~]# rpm -ivh postgresql15-15.5-1PGDG.rhel7.x86_64.rpm
# 安装服务端  
[root@VMTest ~]# rpm -ivh postgresql15-server-15.5-1PGDG.rhel7.x86_64.rpm#ps:如果要卸载的话, 先停止postges服务,然后执行下面的命令即可
[root@VMTest ~]# rpm -qe postgresql15-libs-15.5-1PGDG.rhel7.x86_64.rpm
[root@VMTest ~]# rpm -qe postgresql15-15.5-1PGDG.rhel7.x86_64.rpm
[root@VMTest ~]# rpm -qe postgresql15-server-15.5-1PGDG.rhel7.x86_64.rpm

3. 初始化数据库

[root@VMTest ~]# /usr/pgsql-15/bin/postgresql-15-setup initdb
Initializing database ... OK

4. 设置开机启动,启动数据库

[root@VMTest ~]# systemctl enable postgresql-15 --now  #设置开机启动
[root@VMTest ~]# systemctl status postgresql-15 
[root@VMTest ~]# systemctl start postgresql-15   #启动postgresql#查看启动效果
方法一:
[root@VMTest ~]# ps -ef | grep postgre#方法二:
[root@VMTest ~]# systemctl status postgresql-15

5. 移动数据库到指定目录

5.0 前提条件

# 移动前须先执行命令:1. mkdir -p /data/pgsql/  2. chown postgres:postgres -R /data/pgsql3. systemctl stop postgresql-15

5.1 移动目录

[root@VMTest ~]# mv /var/lib/pgsql/15/* /data/pgsql/
[root@VMTest ~]# chown -R postgres:postgres /data/pgsql/
[root@VMTest ~]# chmod 700 /data/pgsql/data -R

5.2 修改配置文件

#a.修改指定的数据目录
[root@VMTest ~]# vi /usr/lib/systemd/system/postgresql-15.service 
#修改Environment=PGDATA=/var/lib/pgsql/15/data/为Environment=PGDATA=/data/pgsql/data/#b.修改数据目录
[root@VMTest ~]# vi /data/pgsql/data/postgresql.conf
#修改data_directory:data_directory = '/data/pgsql/data'其它配置修改:
log_directory = 'log'  
max_connections = 100 

5.3 重新加载配置文件,重启数据库

[root@VMTest ~]# systemctl daemon-reload
[root@VMTest ~]# systemctl restart postgresql-15
[root@VMTest ~]# ps -ef | grep postgres  #确认启动成功
[root@VMTest ~]# systemctl status postgresql-15

6. 修改密码

[root@VMTest ~]# su postgres
[postgres@VMTest root]$ psql
could not change directory to "/root": Permission denied
psql (11.1)
Type "help" for help.postgres=# #------------------------------------------------------
# 执行命令
postgres=# ALTER ROLE postgres WITH PASSWORD '123abc';
# 退出
postgres=# \q

7. 修改授权

7.1 设置远程连接

#修改1, ps:认证方式解释见附录
# [postgres@VMTest root]$ vi /var/lib/pgsql/15/data/pg_hba.conf
[postgres@VMTest root]$ vi /data/pgsql/data/pg_hba.conf
# IPv4 local connections: 
#host    all             all             127.0.0.1/32            ident
host    all             all             0.0.0.0/0                 md5#new
host    all             all             0.0.0.0/0               trust#修改2
# [root@vmfiend01 ~]# vi /var/lib/pgsql/15/data/postgresql.conf
[root@vmfiend01 ~]# vi /data/pgsql/data/postgresql.conf
#修改listen_addresses 
listen_addresses = '*'
#有需求修改port
#port = 5432 #重启数据库
[root@VMTest ~]# systemctl restart postgresql-15

8. 创建数据库

8.1 创建数据库

[root@VMTest ~]# su postgres
[postgres@VMTest root]$ psql
postgres=# create database databasename;

8.2 查看数据库列表

postgres=# \l

8.3 进入数据库

postgres=# \c databasename;

8.4 进入数据库后,查看数据库

postgres=# \d 

8.5 创建模式schema

deepcogni=# create schema test1;

8.6 navicat连接postgresql数据库

navicat连接时会遇到以下问题, 解决方式如下:
问题:错误: 字段“datlastsysoid“不存在(Navicat报错)说明:    查阅一下资料,Postgres 15 从表中删除了 datlastsysoid 字段pg_database,因此 Navicat 15.0.29 或 16.1 之前的任何版本在查找此已弃用字段时都会引发此错误。解决:方式一:要解决此问题,请升级到最新的 Navicat 15.0.29 或 16.1 及更高版本(可能需要新的许可证)方式二(use):打开 Navicat 文件夹(通常在 C:\Program Files\PremiumSoft\Navicat…) 下),找到 libcc.dll 并创建此文件的备份。在任何十六进制编辑器中打开此文件,如果需要,您可以使用在线工具,例如 https://hexed.it/。在文件中搜索“SELECT DISTINCT datlastsysoid”,并将其替换为“SELECT DISTINCT dattablespace”。将文件保存在原始位置。如果遇到任何安全问题,请将其另存为“.txt”文件,然后将其重命名为“.dll”。       

9. 常用的数据库命令

[root@VMTest ~]# su postgres
[postgres@VMTest root]$ psql  #进入postgresql命令行postgres=# \q   # 退出 or: exit;
postgres=# \l   # 列出所有库
postgres=# \du  # 列出所有用户, 指令显示用户和用户的用户属性
postgres=# \d   # 列出库下所有表
postgres=# \di  # 查看索引
postgres=# dt   # 列举表, 相当于mysql的show tables
postgres=# \dn  # 查看模式schema列表
postgres=# \dn+ # 查看模式schema列表详情postgres=# \z 或 \dp  # 显示用户访问权限
postgres=# \c dbname  # 切换数据库,相当于mysql的use dbname
postgres=# \d tblname # 查看表结构, 相当于desc tblname,show columns from tbnamepostgres=# DROP DATABASE phone; # 删除数据库# 指令查看全部可设置的管理权限
postgres=# \h CREATE ROLE # 显示所有可设置的访问权限 
postgres=# \h GRANT # 创建表(大小写均可)
deepcogni=# create table test(id integer not null primary key);# 添加表的字段
deepcogni=# alter table phone add column phone_number character varying(11) not null;# 重命名一个表
deepcogni=# alter table [表名A] rename to [表名B]; # 删除一个表
deepcogni=# drop table [表名];

9.1 查看版本信息

# 1.查看客户端版本
[root@BC-VM-d20d ~]# psql --version# 2.查看服务器端版本
# 2.1 查看详细信息
postgres=# select version();# 2.2 查看版本信息
postgres=# show server_version;# 2.3 查看数字版本信息包括小版号
postgres=# SHOW server_version_num;
# 或
postgres=# SELECT current_setting('server_version_num');# 3.注意事项
postgres=# SELECT current_setting(‘server_version_num’);# 返回类型为text,如果需要可以转换为interger:
postgres=# SELECT current_setting('server_version_num')::integer;

10. 用户和权限管理

10.1 登录

方式1: 指定参数登录.

#参数含义: -U指定用户 -d要连接的数据库 -h要连接的主机 -W提示输入密码。
psql -U username -d database_name -h host -W#use -- 使用linux当前用户登录连接到'pgtest'数据库
[postgres@VMTest root]$ psql -d pgtest
psql (15.5)
Type "help" for help.pgtest=# 

方式2: 切换到postgres同名用户后登录

# 当不指定参数时psql使用操作系统当前用户的用户名, 作为postgres的登录用户名和要连接的数据库名。
# 所以在PostgreSQL安装完成后可以通过以下方式登录, 此时连接的是postgres数据库, 且登录用户也是postgres。
[root@VMTest ~]# su postgres
[postgres@VMTest root]$ psql

10.2 创建用户

方式1: 在系统命令行中使用createuser命令中创建

createuser username 

方式2: 在PostgresSQL命令行中使用CREATE ROLE指令创建

CREATE ROLE rolename;

方式3: 在PostgresSQL命令行中使用CREATE USER指令创建

CREATE USER username;

CREATE USER和CREATE ROLE的区别在于,CREATE USER指令创建的用户默认是有登录权限的,而CREATE ROLE没有。

\du 指令显示用户和用户的用户属性

10.3 创建用户时设定用户属性

基本语法格式

CREATE ROLE role_name WITH optional_permissions;

示例:在创建用户时设定登录权限。

CREATE ROLE username WITH LOGIN;
\h CREATE ROLE #指令查看全部可设置的管理权限

10.4 修改用户属性

修改权限的命令格式

ALTER ROLE username WITH attribute_options;

修改用户权限--示例

# 赋予登录权限
ALTER ROLE david LOGIN# 禁止登录
ALTER ROLE username WITH NOLOGIN# 赋予创建角色的权限
postgres=# ALTER ROLE pg_test_user_4 WITH CREATEROLE# 修改密码
postgres=# ALTER ROLE pg_test_user_4 WITH PASSWORD '654321';# 设置角色的有效期
postgres=# ALTER ROLE pg_test_user_4 VALID UNTIL 'JUL 7 14:00:00 2012 +8'; #其它 root: role name
postgres=# ALTER ROLE root SUPERUSER;
postgres=# ALTER ROLE root Superuser;
postgres=# ALTER ROLE root Createrole;
postgres=# ALTER ROLE root CreateDB;
postgres=# ALTER ROLE root INHERIT;
postgres=# ALTER ROLE root CONNECTION;
deepcogni=# ALTER ROLE root BypassRLS;postgres=# ALTER ROLE name RENAME TO newname;ALTER ROLE name SET configuration_parameter { TO | = } { value | DEFAULT }  
ALTER ROLE name RESET configuration_parameter描述  
ALTER ROLE 修改一个数据库角色的属性。

ALTER ROLE语句简介:

ALTER ROLE  
名称  
ALTER ROLE -- 修改一个数据库角色  
语法  
ALTER ROLE name [ [ WITH ] option [ ... ] ]  这里的 option 可以是:  SUPERUSER | NOSUPERUSER  | CREATEDB | NOCREATEDB  | CREATEROLE | NOCREATEROLE  | CREATEUSER | NOCREATEUSER  | INHERIT | NOINHERIT  | LOGIN | NOLOGIN  | CONNECTION LIMIT connlimit  | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'  | VALID UNTIL 'timestamp'   ALTER ROLE name RENAME TO newname  ALTER ROLE name SET configuration_parameter { TO | = } { value | DEFAULT }  
ALTER ROLE name RESET configuration_parameter描述  
ALTER ROLE 修改一个数据库角色的属性。

10.5 设置访问权限

语法格式如下:

GRANT permission_type ON table_name TO role_name;

实例:

#赋予demo_role demo表的update权限
GRANT UPDATE ON table_name TO role_name; #赋予demo_role所有表的SELECT权限
GRANT SELECT ON ALL TABLES IN SCHEMA PUBLIC to demo_role; 

特殊符号:ALL代表所访问权限,PUBLIC代表所有用户

# 赋给用户所有权限
GRANT ALL ON table_name TO role_name; # 将SELECT权限赋给所有用户, 大写的PUBLIC是一个特殊的关键字,代表了all users
GRANT SELECT ON table_name TO PUBLIC;
\z或\dp  指令显示用户访问权限。
\h GRANT 显示所有可设置的访问权限

10.6 撤销用户访问权限

语法格式如下:

REVOKE permission_type ON table_name FROM user_name;
# 其中 permission_type 和 table_name 含义与 GRANT 指令中相同。

用户组

在postgres中用户实际上是role,同时组也是role。 包含其他role的role就是组。

创建组示例:

CREATE ROLE temporary_users;
GRANT temporary_users TO demo_role;
GRANT temporary_users TO test_user;

切换ROLE

# 切换到role_name用户
SET ROLE role_name;#切换回最初的role 
RESET ROLE; 

INHERIT权限:该属性使组成员拥有组的所有权限

ALTER ROLE test_user INHERIT;

10.7 删除用户和组

DROP ROLE role_name;
DROP ROLE IF EXISTS role_name;

11 附录

认证方式说明:

1. trust
无条件地允许连接。这种方法允许任何可以与PostgreSQL数据库服务器连接的用户以他们期望的
任意PostgreSQL数据库用户身份登入,而不需要口令或者其他任何认证。2. reject无条件地拒绝连接。这有助于从一个组中"过滤出"特定主机,例如一个reject行可以阻塞一个
特定的主机连接,而后面一行允许一个特定网络中的其余主机进行连接。3. md5
要求客户端提供一个双重 MD5 加密的口令进行认证。4. password
要求客户端提供一个未加密的口令进行认证。
因为口令是以明文形式在网络上发送的,所以我们不应该在不可信的网络上使用这种方式。5. gss
用 GSSAPI 认证用户。只对TCP/IP 连接可用。6. sspi
用 SSPI 来认证用户。只在Windows 上可用。7. ident
通过联系客户端的 ident 服务器获取客户端的操作系统名,并且检查它是否匹配被请求的数据库用户名。
Ident 认证只能在 TCIP/IP 连接上使用。当为本地连接指定这种认证方式时,将用 peer 认证来替代。8. peer
从操作系统获得客户端的操作系统用户,并且检查它是否匹配被请求的数据库用户名。这只对本地连接可用。9. ldap
使用LDAP服务器认证。10. radius
用 RADIUS 服务器认证。11. cert
使用 SSL 客户端证书认证。12. pam
使用操作系统提供的可插入认证模块服务(PAM)认证。13. bsd
使用由操作系统提供的 BSD 认证服务进行认证。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/155077.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文详解!SRM(供应商管理)助力实现采购端实现降本增效

供应商管理关系到企业各部门的正常运转,一个好的SRM供应商管理系统对于公司来说无疑是锦上添花,改善企业与供应商的关系,可以帮助企业实现采购端的降本增效。但在信息化转型的浪潮下,很多企业SRM信息化却遇到不少问题。 那么请花…

父子进程exec,fork等

linux系统编程之进程(五):exec系列函数(execl,execlp,execle,execv,execvp)使用-CSDN博客 C中的exec()函数_c exec函数_向阳逐梦的博客-CSDN博客 前言 fork 函数之后,如果想要把子进程换成一个我想要执行的进程&#…

Vue3的watch使用介绍及场景

目录 一、watch的使用 1. 监听一个变量 2. 监听一个对象的属性 3. 监听一个函数的返回值 二、watch的使用场景 1. 监听表单的变化 2. 监听路由参数的变化 3. 监听Vuex中的数据变化 三、watch的效果图 四、watch的示例 以上就是Vue3的watch的介绍,watch是…

python保存文件到zip压缩包中

这里我们使用zipfile这个库进行操作,保存压缩文件相对简单,只需要指定文件名即可,不需要读取那个文件: with zipfile.ZipFile("zip文件路径", mode, zipfile.ZIP_DEFLATED) as z:z.write("压缩源文件路径", …

MAX/MSP SDK学习01:Object的基本构成、创建销毁行为函数的定义、属性的赋值、以及相关注意事项

Object的基本构成、创建&销毁&行为函数的定义、属性的赋值、以及相关注意事项。 #include "ext.h" // standard Max include, always required #include "ext_obex.h" // required for new style Max object// object struct,定义属…

G管螺纹尺寸对照表

G管螺纹尺寸对照表 NPT 是 National (American) Pipe Thread 的缩写,属于美国标准的 60 度锥管螺纹,用于北美地区.国家标准可查阅 GB/T12716-1991 PT 是 Pipe Thread 的缩写,是 55 度密封圆锥管螺纹,属惠氏螺纹家族&a…

微服务学习|Gateway网关:网关作用、快速入门、路由断言工厂、路由过滤器配置、全局过滤器、过滤器执行顺序、跨域问题处理

为什么需要网关 网关功能: 1.身份认证和权限校验 2.服务路由、负载均衡 3.请求限流 网关的技术实现 在SpringCloud中网关的实现包括两种:gateway、zuul Zuul是基于Servlet的实现,属于阻塞式编程。而SprinaCloudGateway则是基于Spring5中提供的WebFlux&#xf…

最新PS 2024 虎标正式版来啦,附带AI神经滤镜(支持win/mac)

软件简介 文件名称 PS2024 虎标正式版 支持系统 windows、Mac 获取方式 文章底部 分享形式 百度网盘 小伙伴们,下午好!今天给大家的是PS 2024 25.0虎标正式版。 添加图片注释,不超过 140 字(可选) 添加图片注释…

机器学习介绍与分类

随着科学技术的不断发展,机器学习作为人工智能领域的重要分支,正逐渐引起广泛的关注和应用。本文将介绍机器学习的基本概念、原理和分类方法,帮助读者更好地理解和应用机器学习技术。 一、机器学习的基本概念 机器学习是一种通过从数据中学…

了解一下公网IP和域名的区别与联系

​  公网IP和域名是互联网中两个重要的概念,它们在网络通信和网站访问中起着不同的作用。 我们来了解一下公网IP。公网IP是指在全球范围内唯一的IP地址,用于标识互联网上的设备。每个设备连接到互联网时都会被分配一个公网IP地址,这个地址可…

人机交互——自然语言生成

自然语言生成是让计算机自动或半自动地生成自然语言的文本。这个领域涉及到自然语言处理、语言学、计算机科学等多个领域的知识。 1.简介 自然语言生成系统可以分为基于规则的方法和基于统计的方法两大类。基于规则的方法主要依靠专家知识库和语言学规则来生成文本&#xff0…

MySQL之JDBC编程

目录 1. 数据库编程的必备条件 2. Java的数据库编程:JDBC 3. JDBC工作原理 4. JDBC使用 4.1 IDEA配置JDBC 4.2 JDBC开发案例 4.3 JDBC使用步骤总结 5. JDBC常用接口和类 5.1 JDBC API 5.2 数据库连接Connection 5.3 Statement对象 5.4 ResultS…

电脑便签功能在哪里找?电脑桌面便签怎么添加?

很多上班族在使用电脑办公的时候,都需要随手记录工作事项,例如记录共同工作时的想法、会议笔记、常用工作资料、每天待办的工作任务等事项,这时候使用纸质的笔记本来记录工作,不仅不方便随时查看和使用,而且在修改、删…

HarmonyOS ArkTSTabs组件的使用(六)

Tabs组件的使用 ArkUI开发框架提供了一种页签容器组件Tabs,开发者通过Tabs组件可以很容易的实现内容视图的切换。页签容器Tabs的形式多种多样,不同的页面设计页签不一样,可以把页签设置在底部、顶部或者侧边。 Tabs组件的简单使用 Tabs组件…

报错注入 [极客大挑战 2019]HardSQL1

打开题目 输入1或者1",页面均回显NO,Wrong username password!!! 那我们输入1 试试万能密码 1 or 11 # 输入1 and 12 # 输入1 union select 1,2,3 # 输入1 ununionion seselectlect 1,2,3 # 输入1 # 输入1# 页面依旧回…

mac 和 windows 相互传输文件【共享文件夹】

文章目录 前言创建共享文件夹mac 连接共享文件夹 前言 温馨提示:mac 电脑和 windows 电脑必须处于同一局域网下 本文根据创建共享文件夹的方式实现文件互相传输,所以两台电脑必须处于同一网络 windows 创建共享文件夹,mac 电脑通过 windows…

C++11新特性 变参模板、完美转发和emplace

#include <iostream> #include <vector> #include <deque> #include <list> #include <algorithm> using namespace std;class student { public:student() {cout << "无参构造函数被调用!" << endl;}student(int age, st…

PyQt(学习笔记)

学习资料来源&#xff1a; PyQt快速入门——b站王铭东老师 PyQt官网的所有模块 C具体实现的官方文档 PyQt&#xff08;学习笔记&#xff09; PyCharm环境准备运行第一个程序QPushButtonQLabelQLineEdit调整窗口大小、位置、图标布局信号与槽PyQt引入多线程 PyCharm环境准备 新…

yum 搭建仓库 http/ftp

目录 http ftp http 服务端 1. 下载 httpd 服务&#xff0c;记得将防火墙和安全终端全部关掉 2. 开启 httpd 服务 3. 临时挂载 客户端 1. 下载 httpd 服务&#xff0c;记得将防火墙和安全终端全部关掉 2. 开启 httpd 服务 3. 进入 /etc/yum.repos.d 4. 新建一个目录 mhy&…

新零售数字化系统提供商怎么选择?2023十大收银系统排行榜-亿发

随着零售业务的日益繁荣和电子商务的迅猛发展&#xff0c;零售收银系统已成为各类商家提高效率、管理库存、提供更好服务的不可或缺的工具。然而&#xff0c;在众多的收银系统中&#xff0c;如何选择一款适合自己的&#xff0c;一直是许多商家头疼的问题。今天我们就来盘点一下…