【摘要】 如果CentOS所在的服务器限于安全原因,客户并未给我们配置访问外网的权限,那么如何安装PostgreSQL数据库呢?本文将通过具体步骤来详细讲解如何在CentOS7 系统上离线安装PostgreSQL12数据库。

1 离线安装包准备

首先可以访问网址
https://yum.postgresql.org/13/redhat/rhel-7-x86_64/repoview/postgresqldbserver13.group.html
来下载对应(本文以postgresql13为例)的离线安装包文件,具体的示例截图如下:
在这里插入图片描述
通常情况下,需要下载如下几个RPM安装包:

postgresql13-13.0-1PGDG.rhel7.x86_64
#安装扩展
postgresql13-contrib-13.0-1PGDG.rhel7.x86_64
#客户端进行连接.
postgresql13-libs-13.0-1PGDG.rhel7.x86_64
#数据库的安装文件
postgresql13-server-13.0-1PGDG.rhel7.x86_64

注意:具体版本则需要根据自己的需要来进行选择,centos7对应于rhel7,如果是centos8 的话 选择 rhel8 进行下载。

然后,就需要利用SSL工具将本地下载的RMP安装文件上传到CentOS7服务器
(虽然服务器不能联网访问网站资源,但可以进行远程登录进行管理)。

2 离线安装

首先进入上述离线安装文件所在的目录,用ll命令查询一下安装包是否已经离线上传好,界面截图如下:
在这里插入图片描述
在postgresql13_rpm目录下,执行如下命令,进行安装包的安装:

yum localinstall *.rpm 

期间可能会访问网络,但不影响安装,在提示是否确认安装时,选择y确认安装,等待安装即可。成功安装完postgresql 13 数据库之后,会自动创建一个服务,可以看一下名为postgresql-13的服务,使用如下命令进行服务状态查看:

systemctl status postgresql-13  

首次安装后,此命令会显示相关的文件信息:

Loaded: loaded (/usr/lib/systemd/system/postgresql-13.service; enabled; vendor preset: disabled)

可以通过cat命令查看此文件的内容,其中包含相关的数据存储目录信息:

cat /usr/lib/systemd/system/postgresql-13.service
 Location of database directory
Environment=PGDATA=/var/lib/pgsql/13/data/ 
#程序目录
ExecStart=/usr/pgsql-13/bin/postmaster -D ${PGDATA} 

3 数据库初始化

有了数据库的数据存储目录和程序所在目录,可以使用如下命令进行数据库的初始化工作,具体示例代码如下:

su - postgres
cd /usr/pgsql-13/bin/
#初始化数据库
./initdb -D /var/lib/pgsql/13/data/

成功执行命令后,需要退出postgres命令环境,用root 用户启动postgresql 服务,并且设置postgresql服务为自动启动,这样在服务器重启后,无需手动再启动postgresql 服务,具体命令如下:

systemctl enable  postgresql-13 && systemctl restart postgresql-13

最后,需要对PG数据库进行安全性方面的配置,比如修改密码,创建用户,设置登录策略等等,下面给出一些示例代码:

su - postgres
psql

#修改密码

alter role postgres with password 'your_root_pwd###';

#修改配置文件,配置登录策略等

vim /var/lib/pgsql/12/data/pg_hba.conf
#增加一行
host    all             all             0.0.0.0/0         md5   

注: trust 是免密, md5 是加密
#修改数据库其他配置信息

vim /var/lib/pgsql/13/data/postgresql.conf
listen_addresses = '*' 
max_connections = 700

#重启服务

systemctl restart  postgresql-13

重启后,再次查看数据库状态,命令如下:

在这里插入图片描述
至此,数据库安装完毕。。。

4 psql命令详解

psql -h <hostname or ip> -p <端口> [数据库名称] [用户名称]
**psql常用连接参数**

缩写	说明
-h	数据库服务器主机
-p	数据库服务器端口
-U	数据库用户名
-d	连接的数据库名称
-c	运行一条sql命令, 然后退出
-f	执行文件中的命令, 然后退出
-l	列出可用的数据库, 然后退出
-V	输出版本信息,然后退出
-q	没有多余消息,只有查询输出
-H	查询结果以HTML表格形式输出

psql命令

常用命令	说明
\q	退出命令行
\l	查看数据库列表
\c	切换数据库
\x	查询结果横纵显示切换
\s	查看命令历史记录
\h	查看所有的sql关键字
\?	命令行操作的帮助
\i	执行sql文件
\timing	执行SQL消耗时间开关
\encoding	显示字符集
\pset border 0	输出内容无边框
\pset border 1	边框只在内部存在
\pset border 2	内外都有边框
\d命令	说明
\d	显示表、索引和视图
+	显示更多的信息包括表和列的注释等相关信息
\da	显示所有可用聚集函数,以及它们操作的数据类型
\dA	显示访问方法
\dAc	显示方法子类别
\dAf	显示方法家庭
\dAo	显示方法家庭的操作员
\dAp	显示方法家庭的支持功能
\db	显示所有的表空间
\dc	显示所有字符集之间的可用转换
\dC	显示所有类型转换
\dd	显示所有可视对象,或所有匹配 pattern 的描述
\dD	显示所有可用域
\ddp	显示默认权限
\deu	显示用户映射
\df	显示匹配的函数(存储过程)
\dF	显示文本搜索配置
\dFd	显示文字搜索字典
\dFp	显示文本搜索解析器
\dFt	显示文字搜索模板
\dg	显示角色
\di	显示匹配的索引
\dl	显示一个大对象的列表,与\lo_list相同
\dL	显示程序语言
\dm	显示物化视图
\dn	显示所有可用模式(名字空间)
\do	显示所有可用操作符,以及它们的操作数和返回的数据类型
\dO	显示排序规则
\dp	显示表,视图和序列访问权限
\drds	显示每个数据库的角色设置
\ds	显示匹配的序列
\dt	显示匹配的表
\dT	显示数据类型
\du	显示角色
\dv	显示匹配的视图
\dx	列表扩展
\dy	显示事件触发器

示例:

1.命令提示符前面的就是当前的数据库,使用 \l 查看当前的数据库列表:
在这里插入图片描述

2.可以创建新的数据库:
在这里插入图片描述
3.执行命令 \c 命令切换当前数据库为test:
在这里插入图片描述
4.执行 \d 可以查看当前数据库下的所有表:
在这里插入图片描述
5.创建一张新表并再次查看:

CREATE TABLE school (
    id        integer not null ,
    name      character(32),
    number    char(5),
    constraint sch_key primary key(id)
);

在这里插入图片描述
6.执行 \d school可以查看表的详细信息:
在这里插入图片描述
7.执行 \q 退出数据库:
在这里插入图片描述
常用命令:

CREATE DATABASE exampledb OWNER dbuser;  #创建用户数据库
GRANT ALL PRIVILEGES ON DATABASE exampledb TO dbuser; #将exampledb数据库的所有权限都赋予dbuser
\c dbname  #切换数据库,相当于mysql的use dbname
\dt #列举表,相当于mysql的show tables
\d tblname  #查看表结构,相当于desc tblname,show columns from tbname
\di  #查看索引
DROP DATABASE phone; # 删除数据库
DROP DATABASE phone with (force); #  强制删除数据库
create table test(id integer not null primary key);  #创建表(大小写均可)
alter table phone add column phone_number character varying(11) not null; #添加表的字段
alter table [表名A] rename to [表名B]; #重命名一个表
drop table [表名]; #删除一个表
alter table [表名] add column [字段名] [类型]; #在已有的表里添加字段
alter table [表名] drop column [字段名]; # 删除表中的字段
alter table [表名] rename column [字段名A] to [字段名B]; #重命名一个字段
alter table [表名] alter column [字段名] set default [新的默认值]; #给一个字段设置缺省值
alter table [表名] alter column [字段名] drop default;  #去除缺省值
insert into 表名 ([字段名m],[字段名n],......) values ([列m的值],[列n的值],......); 
//eg: insert into phone(id, phone_number) values(1, 18819259295);  #在表中插入数据
update [表名] set [目标字段名]=[目标值] where [该行特征]; 
eg: update phone set phone_number = replace('phone_number','8', '1'); #修改表中的某行某列的数据
delete from [表名] where [该行特征]; 
delete from [表名];--删空整个表     #删除表中某行数据
create table ([字段名1] [类型1] <references 关联表名(关联的字段名)>;,[字段名2] [类型2],......<,primary key (字段名m,字段名n,...)>;);  #创建表
SELECT * FROM pg_stat_activity;  #查看次数据库的连接

数据导入导出:

数据导出:
pg_dump:将一个PostgreSQL数据库转储到一个脚本文件或者其它归档文件中 

pg_dump mydb > db.sql:将mydb数据库转储到一个 SQL 脚本文件

pg_dump mydb -s > db.sql:将mydb数据库转储到一个 SQL 脚本文件(只导出数据库表结构,不带数据)

pg_dump -D -a -t zones_seq - t interway -t table_3 ... > /tmp/zones_seq.sql:导出部分表,支持通配符,见参考文章1

pg_dumpall:将一个PostgreSQL数据库集群转储到一个脚本文件中

数据导入:
psql:psql -U gpadmin -d your-db -f your-table.sql
pg_restore: pg_restore -d your-db your-table.tar

eg:

pg_dump -h 10.32.176.82 -p 5432 -U postgres -d sonarqube -f  /tmp/sonarqube.sql #数据库备份
createdb -h 10.32.176.82 -p 5432 -U postgres sonarqube
psql -h 10.32.176.82 -p 5432 -U postgres -d sonarqube -f sonarqube.sql    #数据库恢复
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐