
目录
[2.2 执行安装](#2.2 执行安装)
[2.3 数据库初始化](#2.3 数据库初始化)
[2.4 配置环境变量](#2.4 配置环境变量)
[2.5 创建数据库](#2.5 创建数据库)
[2.6 配置远程](#2.6 配置远程)
[2.7 测试远程](#2.7 测试远程)
一、何为PostgreSQL?
PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES, 版本 4.2为基础的对象关系型数据库管理系统(ORDBMS)。POSTGRES 领先的许多概念在很久以后才出现在一些商业数据库系统中。
PostgreSQL是最初的伯克利代码的开源继承者。它支持大部分 SQL 标准并且提供了许多特性:
- 复杂查询
- 外键
- 触发器
- 可更新视图
- 事务完整性
- 多版本并发控制
同样,PostgreSQL可以用许多方法扩展,比如, 通过增加新的:
- 数据类型
- 函数
- 操作符
- 聚集函数
- 索引方法
- 过程语言
官网地址: https://www.postgresql.org/download/linux/redhat/
连接工具: https://www.pgadmin.org/download/

二、PostgreSQL安装
2.1安装依赖
bash
# 获取所需依赖包
wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/l/libzstd-1.5.5-1.el7.x86_64.rpm
wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/l/llvm5.0-devel-5.0.1-7.el7.x86_64.rpm
wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/l/llvm5.0-5.0.1-7.el7.x86_64.rpm
wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/l/llvm5.0-libs-5.0.1-7.el7.x86_64.rpm
yum install -y libzstd-1.5.5-1.el7.x86_64.rpm
yum install -y centos-release-scl-rh llvm5*
yum install -y epel-release
依赖下载安装完成

2.2 执行安装
cs
wget --no-check-certificate https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# 安装 PostgreSQL
sudo yum install -y postgresql15-server postgresql15-devel
安装完成

2.3 数据库初始化
css
# 初始化DB
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
# 开机启动|启动|重启|状态|停止 命令
sudo systemctl enable postgresql-15
sudo systemctl start postgresql-15
sudo systemctl restart postgresql-15
sudo systemctl status postgresql-15
sudo systemctl stop postgresql-15
确认启动

2.4 配置环境变量
/etc/profile文件中添加如下配置:
cs
# PGSQL_HOME
export PGSQL_HOME=/usr/pgsql-15
export PATH=$PATH:$PGSQL_HOME/bin
配置完成后 记得 source一下下。
2.5 创建数据库
cs
# 切换用户
su postgres
# 进入命令行
psql
#创建DB
create database test_db
alter user postgres with password 'winner@001';
进入数据库命令行 创建数据库并

启动默认端口:5432

2.6 配置远程
cs
# 编辑
vim /var/lib/pgsql/15/data/postgresql.conf
修改参数:
listen_addresses = '*'
# 编辑配置
vim /var/lib/pgsql/15/data/pg_hba.conf
# 添加内容
host all all 0.0.0.0/0 md5
# 重启
systemctl restart postgresql-15
2.7 测试远程
命令行测试
cs
psql -h 主机IP -p 端口 -U 用户名 -W -d 数据库

使用Navicat162 连接, 下载最新的 Navicat ,要不然会报错

三、常用命令
输入命令 su postgres 然后在输入命令psql 如果一切正常,系统提示符会变为"postgres=#",表示这时已经进入了数据库控制台
- \l:列出系统中的数据库
- \h:查看SQL命令的解释,比如\h select。
- \?:查看psql命令列表。
- \l:列出所有数据库。
- \c [database_name]:连接其他数据库。
- \d:列出当前数据库的所有表格。
- \du:列出所有用户。
- \e:打开文本编辑器。
- \conninfo:列出当前数据库和连接的信息。

切换数据库并 查询users 表

四、用户创建和数据库权限
添加名为kangll的用户,并设置密码'123456', 给kangll用户,创建数据库叫kangll_test
cs
postgres=# create user kangll with password '123456';
CREATE ROLE
postgres=# create database kangll_test owner kangll;
CREATE DATABASE
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
kangll | | {}
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
postgres=# \l

将 kangll_test 库的所有权限赋予kangll用户
cs
grant all privileges on database kangll_test to kangll;
grant usage on schema public to kangll;
grant all privileges on all tables in schema public to kangll;
grant all privileges on all sequences in schema public to kangll;
grant select,insert,update,delete on all tables in schema public to kangll;
grant all on schema public to kangll;
pg 默认所有用户都可以在名称为public的schema中创建表,只读用户不允许创建。
kang_test 库中创建 stu 表
cs
CREATE TABLE stu(
stu_id BIGINT NOT NULL,
stu_name VARCHAR(255) NOT NULL);
# 插入数据
INSERT INTO stu VALUES(1, 'kangll');
# 查询
SELECT * FROM stu;

修改角色为超级用户角色
bash
alter role kangll with superuser;

撤销用户权限
cs
/* 撤销用户权限 */
REVOKE privileges ON tablename FROM user;