CentOS 7安装PostgreSQL 15版本数据库

目录

一、何为PostgreSQL?

二、PostgreSQL安装

2.1安装依赖

[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;
相关推荐
Lojarro3 分钟前
后端-navicat查找语句(单表与多表)
数据库·mysql
月泪同学28 分钟前
数据库面试题整理
数据库·mysql·面试
程序员学习随笔2 小时前
PostgreSQL技术内幕11:PostgreSQL事务原理解析-MVCC
数据库·postgresql
莫叫石榴姐3 小时前
一份热乎的阿里25届数据分析面试题
数据库·数据仓库·sql·算法·数据挖掘·数据分析
cong*4 小时前
数据库提权【笔记总结】
数据库·笔记·adb
没明白白5 小时前
Redis 缓存雪崩、缓存穿透、缓存击穿详解
数据库·redis·缓存
gbase_lmax5 小时前
gbase8s数据库常见的索引扫描方式
数据库
阳光九叶草LXGZXJ5 小时前
南大通用数仓-GCDW-学习-03-用户管理
linux·运维·数据库·学习
Islucas6 小时前
入门Django
数据库·django·sqlite
jnrjian6 小时前
update 强制 NEST_LOOP NL 的理解,被驱动表 inner table
数据库·sql·oracle