centos7系统下postgresql15离线安装,卸载
nanshan 2024-11-04 13:07 25 浏览 0 评论
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/pgsql
3. 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 tbname
postgres=# 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 认证服务进行认证。
相关推荐
- Linux/Unix 系统中非常常用的命令
-
Linux/Unix系统中非常常用的命令,它们是进行文件操作、文本处理、权限管理等任务的基础。下面是对这些命令的简要说明:**文件操作类:*****`ls`(list):**列出目录内容,显...
- 教你如何在Linux中删除分区(CLI篇)
-
文接上篇,继续以Ubuntu系统为例。删除分区前,急得重要数据备份!备份!备份用命令操作分区,用的最多的莫过于fdisk了,几乎所有的Linux发行版都默认带有fdisk。首先要知道的是,你想删除的分...
- 敲完就让你提桶跑路的Linux命令(敲完就让你提桶跑路的linux命令是什么)
-
不谨慎可能就会让你提桶的Linux命令!!!删除文件rm-rf该命令是删除文件或文件夹等最快的方式之一。删除后的内容很难恢复,如果删除系统文件可能会导致系统崩坏。>rm-rf/#强制...
- Log文件可以删除吗(taxukeylog文件可以删除吗)
-
Log文件(日志文件)是否可以删除取决于具体场景和文件类型。以下是详细分析和建议:一、哪些Log文件可以删除?非关键应用日志用户级应用日志:如浏览器缓存日志、游戏临时日志等,通常不影响系统运行,可定期...
- Linux 删除空目录(linux直接删除目录)
-
rmdir命令用来删除空目录。当目录不再被使用时,或者磁盘空间已到达使用限定值,就需要删除失去使用价值的目录。利用rmdir命令可以从一个目录中删除一个或多个空的子目录。该命令从一个目录中删除一个或...
- 在 Windows 11 或 10 上删除、创建和格式化分区
-
在Windows11或10上删除、创建和格式化分区假设您的现有电脑使用的是传统硬盘,但现在您想再添加一个硬盘或SSD。当然,后者将用于启动操作系统,而前者将作为纯数据存储。在成功将操作系统...
- 如何使用 Apt Clean 命令清除 APT 缓存?
-
APT(AdvancedPackageTool)是Debian系Linux发行版的包管理工具,用于处理软件包的安装、升级和依赖管理。在使用apt命令(如aptinstall、apt...
- Linux 磁盘空间不够用?5 招快速清理文件,释放 10GB 空间不是梦!
-
刚收到服务器警告:磁盘空间不足90%!装软件提示Nospaceleftondevice!连日志都写不进去,系统卡到崩溃?别慌!今天教你5个超实用的磁盘清理大招,从临时文件到无用软件一键搞定...
- Linux清空日志方法(linux怎么清理日志)
-
方法1:使用>重定向>/path/to/logfile或(需要权限时):sudosh-c'>/var/log/logfile'方法2:使用trun...
- 如何在Eclipse中搭建Zabbix源码的调试和开发环境
-
Zabbix是一款非常优秀的企业级软件,被设计用于对数万台服务器、虚拟机和网络设备的数百万个监控项进行实时监控。Zabbix是开放源码和免费的,这就意味着当出现bug时,我们可以很方便地通过调试源码来...
- Linux操作系统之常用命令(linux操作系统之常用命令有哪些)
-
Linux操作系统一、常用命令1.系统(1)系统信息arch显示机器的处理器架构uname-m显示机器的处理器架构uname-r显示正在使用的内核版本dmidecode-q显示硬件系...
- 理解linux内核的vmlinuz和initrd(linux内核原理及分析)
-
Originaladdress:http://www.chenjunlu.com/2010/11/understanding-of-vmlinuz-initrd-and-system-map/1....
- Linux纯干货知识总结|面试专用(linux面试宝典)
-
学习Linux的重要性相信不用我多说大家也明白,以下是小编总结的常用Linux基础知识以及面试常问的Linux命令,希望能帮助大家更规范地理解和使用~绝对路径和相对路径绝对路径以正斜杠开始完整的文件的...
- Linux基础知识之启动流程分析(简述linux启动流程)
-
Linux系统启动原理:1.poweron开机。2.开机自检:电脑开机后首先加载BIOS(BasicInput/OutputSystem基本输入输出系统)。BIOS程序首先检查计算机能否满足运...
- Java程序员必备——Linux的面试常见问题及面试题!你知道多少?
-
一.常用命令1.编辑相关①.awkNF:字段总数NR:第几行数据FS:分隔字符②.sed-n-i直接修改4a:在第四行后添加4i:在第四行前插入1,5csting:用sting替换1到5行...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)