转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。
PostgreSQL是一个开源的、功能强大的对象关系型数据库系统。它的起源可以追溯到 1986 年。PostgreSQL可以在所有主要操作系统上运行。
1)历史悠久,架构久经考验;
2)免费、开源且社区较为活跃;
3)具有高度扩展性,可以自定义数据类型、构建自定义函数等,且无需重新编译数据库;
4)从 2021 年 9 月发布的第 14 版开始,PostgreSQL 至少符合 SQL:2016 Core 一致性的 179 个强制性特性中的 170 个;
以下是 PostgreSQL 中各种功能的详尽列表,每个主要版本中都会添加更多功能:
数据类型
数据的完整性
并发、性能
可靠性,灾难恢复
安全
可扩展性
国际化,文本搜索
系统版本:centos7
PostgreSQL版本:postgresql-14(目前最新版)
# Install the repository RPM:
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# Install PostgreSQL:
sudo yum install -y postgresql14-server #这一步会自动创建默认用户postgres
#create your own datadir
sudo mkdir /home/Data/postgres -p
sudo chown postgres:postgres -R /home/Data/postgres
#change configfi of /usr/lib/systemd/system/postgresql-14.service:
Environment=PGDATA=/home/Data/postgres
# Optionally initialize the database and enable automatic start:
sudo /usr/pgsql-14/bin/postgresql-14-setup initdbsudo systemctl enable postgresql-14sudo systemctl start postgresql-14
添加远程连接的自定义配置
#1. change the bind IP:
#编辑 /home/Data/postgres/postgresql.conf ,约61行添加这行,增加5432端口绑定IP:
listen_addresses = '*' #or listen_addresses = '${IP}'
#2. add IPv4 local connections:
#编辑 /home/Data/postgres/pg_hba.conf,约92行“IPv4 local connections”模块添加这行,授权远程连接:
host all all 0.0.0.0/0 md5
#3. restart postgresql:
systemctl daemon-reloadsystemctl restart postgresql-14
源码包下载路径:https://www.postgresql.org/ftp/source/
安装包:postgresql-14.4.tar.gz
源码安装的依赖条件:
需要GNU make版本 3.80 或更新版本(命令行执行“make --version”查看GNU版本);
安装gcc,推荐使用最新版本的GCC
安装tar命令,用以解压压缩包
安装GNU Readline 库,用以psql记住您键入的每个命令,并允许您使用箭头键来调用和编辑以前的命令。
安装 zlib 压缩库
其余信息见:https://www.postgresql.org/docs/current/install-requirements.html
离线源码安装步骤
# yum -y install make openssl-devel gcc tar readline-devel zlibe-devel
# mkdir -p /home/data/pgsql #创建数据目录
# mkdir -p /home/app #创建安装目录
# tar xf postgresql-14.4.tar.gz
# cd postgresql-14.4/
# ./configure --prefix=/home/app/pgsql-14 #编译安装,可参考官网设置更多自定义参数
# make
# make install
# adduser postgres #创建pgsql管理员账号postgres
# chown postgres:postgres /home/data/pgsql #修改数据目录权限
# su - postgres #切换到普通用户进行后边的初始化数据及启动操作
$
$ /home/app/pgsql-14/bin/initdb -D /home/data/pgsql #初始化数据
$ /home/app/pgsql-14/bin/pg_ctl -D /home/data/pgsql -l /home/data/pgsql/logfile start #启动postgresql应用,logfile如果不指定路径,就会在当前目录下生成logfile
$ /home/app/pgsql-14/bin/createdb test #测试创建test库
$ /home/app/pgsql-14/bin/psql test # 测试登录psql并进入test库
自定义配置:
1、change the bind IP:
vim /home/data/pgsql/postgresql.conf ,约61行添加这行:
listen_addresses = '*' #or listen_addresses = '${IP}'
2、 添加IPv4 local connections:
vim/home/data/pgsql/pg_hba.conf,约92行IPv4 local connections模块添加这行,授权远程连接:
host all all 0.0.0.0/0 md5
进入数据库
# su postgres
$ /home/app/pgsql-14/pgsql/bin/psql
给postgres用户设置密码
postgres=# \password postgres
Enter new password for user "postgres":
Enter it again:
postgres=#
创建sre库
postgres=# create database sre;
CREATE DATABASE
postgres=#
列出当前所有database
postgres=# \list
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
sre | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
test | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
(5 rows)
postgres=#
创建新的用户并设置密码
postgres=# create user sre with password 'sre';
CREATE ROLE
postgres=#
列出当前所有用户
postgres=# \du #查看指定用户则跟上用户名,如: \du sre
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
sre | | {}
postgres=#
给用户sre添加权限
postgres=# alter role sre with CREATEDB; #给用户创建db的权限
ALTER ROLE
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
sre | Create DB | {}
postgres=#
将数据库sre的所有权限都授权给新用户sre
postgres=# GRANT ALL PRIVILEGES ON DATABASE sre to sre; #前一个sre是库,后一个sre是用户
GRANT
postgres=#
删除sre库
postgres=# drop database sre;
DROP DATABASE
postgres=#
删除指定用户
postgres=# drop user sre; #删除用户前先确保其名下没有关联的database,否则无法删除
DROP ROLE
postgres=#
pgAdmin连接pgsql配置步骤
连接成功
(本文完)