一、PostgreSQL简介
PostgreSQL是一个功能强大的开源数据库系统。经过长达15年以上的积极开发和不断改进,PostgreSQL已在可靠性、稳定性、数据一致性等获得了业内极高的声誉。目前PostgreSQL可以运行在所有主流操作系统上,包括Linux、Unix(AIX、BSD、HP-UX、SGI IRIX、Mac OS X、Solaris和Tru64)和Windows。PostgreSQL是完全的事务安全性数据库,完整地支持外键、联合、视图、触发器和存储过程(并支持多种语言开发存储过程)。它支持了大多数的SQL:2008标准的数据类型,包括整型、数值型、布尔型、字节型、字符型、日期型、时间间隔型和时间型,它也支持存储二进制的大对像,包括图片、声音和视频。PostgreSQL对很多高级开发语言有原生的编程接口,如C/C++、Java、.Net、Perl、Python、Ruby、Tcl 和ODBC以及其他语言等,也包含各种文档。
作为一种企业级数据库,PostgreSQL以它所具有的各种高级功能而自豪,像多版本并发控制(MVCC)、按时间点恢复(PITR)、表空间、异步复制、嵌套事务、在线热备、复杂查询的规划和优化以及为容错而进行的预写日志等。它支持国际字符集、多字节编码并支持使用当地语言进行排序、大小写处理和格式化等操作。它也在所能管理的大数据量和所允许的大用户量并发访问时间具有完全的高伸缩性。目前已有很多PostgreSQL的系统在实际生产环境下管理着超过4TB的数据。
系统的极限值:
描述 | 大小 |
---|---|
最大单个数据库大小 | 不限 |
最大数据单表大小 | 32 TB |
单条记录最大 | 1.6 TB |
单字段最大允许 | 1 GB |
单表允许最大记录数 | 不限 |
单表最大字段数 | 250 - 1600 (取决于字段类型) |
单表最大索引数 | 不限 |
PostgreSQL优点:
随着使用数量的增加不会影响业务的利润。
在任何阶段都不会有类似授权审计的打扰。
在做理论性研究和测试性的发布时不必考虑额外授权费用的影响。
官网:https://www.postgresql.org/
文档地址:http://www.postgres.cn/docs/10/
二、下载安装
下载地址:https://www.postgresql.org/download/
-
下载
-
安装( Windows)
安装(CentOS)
# 安装数据库
[root@master ~]# yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
[root@master ~]# yum install postgresql12
[root@master ~]# yum install postgresql12-server
# 初始化数据库
[root@master ~]# /usr/pgsql-12/bin/postgresql-12-setup initdb
Initializing database ... OK
# 设置开机启动
[root@master ~]# systemctl enable postgresql-12
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-12.service to /usr/lib/systemd/system/postgresql-12.service.
# 数据库启动
[root@master ~]# systemctl start postgresql-12
# 端口查看
[root@master ~]# netstat -tanl
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 52 192.168.56.101:22 192.168.56.1:60473 ESTABLISHED
tcp 0 0 192.168.56.101:22 192.168.56.1:51248 ESTABLISHED
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:5432 :::* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
三、配置与使用
- 进入数据库
# 进入postgreSQL的交互终端
[root@master ~]# sudo -u postgres psql
# 退出交互终端
[root@master ~]# sudo -u postgres psql
could not change directory to "/root": Permission denied
psql (12.1)
Type "help" for help.
# 退出交互终端
postgres=# \q
- 创建用户
username为你自己想要创建的用户名,superuser为创建的这个用户拥有的权限
属性 | 说明 |
---|---|
login | 只有具有 LOGIN 属性的角色可以用做数据库连接的初始角色名。 |
superuser | 数据库超级用户 |
createdb | 创建数据库权限 |
createrole | 允许其创建或删除其他普通的用户角色(超级用户除外) |
replication | 做流复制的时候用到的一个用户属性,一般单独设定。 |
password | 在登录时要求指定密码时才会起作用,比如md5或者password模式,跟客户端的连接认证方式有关 |
inherit | 用户组对组员的一个继承标志,成员可以继承用户组的权限特性 |
# 创建一个用户hjj
postgres=# create user hjj superuser;
CREATE ROLE
# 查看已创建的用户
postgres=# \du
List of roles
Role name | Attributes | Member of
------------+------------------------------------------------------------+-----------
hjj | Superuser | {}
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
# 删除用户
postgres=# drop user hjj
# 查看当前数据库列表
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
template0 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 rows)
# 修改数据库账户postgres密码
postgres=# alter user postgres with password '123456';
ALTER ROLE
template0和1这3个库是不允许操作的。
- 数据库创建
# 创建test数据库
postgres=# CREATE DATABASE test WITH OWNER=postgres ENCODING='UTF-8';
CREATE DATABASE
# 切换数据库
postgres=# \c test
You are now connected to database "test" as user "postgres".
test=#
# 查看当前数据库下的所有表
test=# \d
Did not find any relations.
- 配置远程登录
# 修改监听地址
[root@master ~]# vi /var/lib/pgsql/12/data/postgresql.conf
# 内容
listen_addresses = '*'
# 修改可访问的IP段
[root@master ~]# vi /var/lib/pgsql/12/data/pg_hba.conf
# 添加 表示允许所有主机使用所有合法的数据库用户名访问数据库,并提供加密的密码验证。
host all all 0.0.0.0/0 md5
# 重启
[root@master ~]# systemctl restart postgresql-12
- Navicat Premium 12连接