概念
PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的Postgres 4.2版本为基础的对象关系型数据库管理系统。
Postgres的许多领先概念只是在比较迟的时候才出现在商业网站数据库中。
PostgreSQL支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图、事务完整性、多版本并发控制等。
PostgreSQL也可以用许多方法扩展,例如通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言等。另外,因为许可证的灵活,任何人都可以以任何目的免费使用、修改和分发PostgreSQL。
特点
PostgreSQL可在所有主要操作系统
PostgreSQL支持文本,图像,声音和视频,并包括用于C/C++,Java,Perl,Python,Ruby,Tcl和开放数据库连接(ODBC)的编程接口
PostgreSQL支持SQL的许多功能,例如复杂SQL查询,SQL子选择,外键,触发器,视图,事务,多进程并发控制(MVCC),流式复制(9.0),热备(9.0)
在PostgreSQL中,表可以设置为从“父”表继承其特征
可以安装多个扩展以向PostgreSQL添加附加功能
实验环境
实验步骤
1、删除自带PostgreSQL客户端软件
rpm -qa | grep postgresql
yum -y remove postgresql
2、安装PostgreSQL
将pgsql14的三个包拖入
yum -y localinstall *.rpm
3、初始化数据库
/usr/pgsql-14/bin/postgresql-14-setup initdb
4、设置允许外部连接
vim /var/lib/pgsql/14/data/pg_hba.conf
添加:
host all all 0.0.0.0/0 md5
vim /var/lib/pgsql/14/data/postgresql.conf
修改:
5、设置允许root命令登录
vim /var/lib/pgsql/14/data/pg_hba.conf
修改:
6、给PostgreSQL安装目录授权
chown -R postgres.root /usr/pgsql-14/
7、将PostgreSQL命令软链接到环境变量/usr/bin
-f:强制覆盖,因为自带PostgreSQL9.2版本命令无法全部删除
ln -sf /usr/pgsql-14/bin/* /usr/bin/
8、启动PostgreSQL
systemctl start postgresql-14
netstat -anpt | grep postmaster
查看PostgreSQL版本
psql --version
9、切换postgres用户登录PostgreSQL
su - postgres
psql -U postgres ——远程访问-W 提示输入密码
10、设置登录数据的密码
alter user postgres with encrypted password '123456';
encrypted:生成加密密码
11、查看所有数据库,创建数据库test
\l
create database test;
12、切换到指定数据库
\c test;
13、创建表t1,查看所有表
create table t1(id int primary key,name varchar(20));
\d
14、向t1表中插入数据
insert into t1 values(1,'zhangsan'),(2,'lisi');
15、查看t1表中内容
select * from t1;
16、查看t1表结构
\d t1;
17、查看索引
\di t1_pkey;
手动添加索引
create index idx_id on t1(id);
18、查看PostgreSQL的发行条款
\copyright
19、查看客户端编码情况
\encoding
20、查看命令帮助
\h
21、退出数据库
\q
22、备份数据库到指定目录并还原
切换到root用户创建备份目录并赋权
mkdir /backup
chown -R postgres.postgres /backup/
备份:
su – postgres
pg_dump test > /backup/test.bak
(注:全备命令pg_dumpall )
删除test数据库:
psql -U postgres
\l
drop database test;
\l
还原:
create database test;
psql -U postgres -d test -f /backup/test.bak
查看数据
psql -U postgres
\l
23、创建普通用户并登录测试
create user test01_user with password 'Test01@123';
create database test01 owner test01_user;
grant all privileges on database test01 to test01_user;
测试:
使用test01_user用户登录
psql -h 192.168.8.5 -p 5432 -U test01_user -d test01
进入test01库创建user1表并插入数据
\c test01
create table user1(id int,name varchar(10));
insert into user1 values(1,'aa'),(2,'bb');
select * from user1;
进入test库查看t1表
\c test
\d
select * from t1;
因为test01_user用户对test01库有所有权限,对test库没有权限,所有无法查看test库中表的数据
24、查看所有用户
\du