目录
[PostgreSQL 的特点以及概念 - 个人观点](#PostgreSQL 的特点以及概念 - 个人观点)
概要
本文仅作学习参考 仅代表个人学习postgresql数据库的一些心得体会。
学习过程中本人参考密歇根大学postgresql课程,从环境搭建到sql语法。
由于学习课程使用linux环境,而本人日常使用mac环境,所以会有一些终端命令上的区别,我会在这里将两种环境穿插着记录学习心得。
PostgreSQL 的特点以及概念 - 个人观点
postgresql是以数据库为访问目标的sql,听起来很抽象,即针对某个存在的database,我可以访问它,其他人也可以访问它,允许同时访问它,所以用户反而是隐藏的概念 在psql里不重要,重要的是所访问的数据库 以及对该数据库建表等系列操作。
从linux和mac分别进入psql是有区别的,mac里并不会默认创建一个postgresql用户,但是linux会,mac只会用你的apple用户名做默认登陆,这一点进入psql后可以使用' \connect '查看当前连接的用户。

使用' psql ' 即可登陆postgresql,这里如果你不指定任何连接的服务器,端口,用户名,数据库,将会使用默认用户登陆默认数据库,在mac上即使用默认用户(与你apple用户名相同)登陆默认数据库(与你apple用户名相同)。
如果你不满足使用默认用户登陆,不满足使用默认创建的数据库,那么你可以自己创建新的用户和数据库即使用下方创建新用户命令:
sql
create user claem with password ''; #空白'' 意味着空白密码 会弹出警告 仍会创建成功
新创建的用户是不具备任何权限的 使用' \du ' 命令查看所有用户的权限:

(注意👆此处我是以默认用户登陆进行的创建用户命令)
除了默认的用户(同apple用户名一致),其他新用户均不具有权限,需要我们增加权限(创建数据库,创建新用户,...)。如果你以某个没有任何权限的用户登陆数据库,那么你无法进行任何操作,包括运行上述创建用户的命令。

此处我以claem用户登入数据库,该用户没有任何权限,我尝试运行创建新用户命令失败,提示permission denied。
接下来我为claem用户增加权限(依旧先登陆默认用户 拥有超级权限可做任何更改):
sql
alter user claem with createdb;
alter user claem with createrole;
登陆supersuer为新用户claem增加了创建数据库、创建角色权限。
基本权限设定好之后,我们允许任何有权限的用户创建数据库,该数据库也允许多个用户共用,意味着A创建了数据库db01,B、C可以在db01里创建表t01、t02,...,这一点很重要,因为登陆sql的时候允许不指定用户名登陆即仅:' psql 数据库名 '登陆,并且多台服务器可以一同登陆。

查看数据库db01里的表信息,可以发现存在不同用户创建的表,当前我使用test01用户登陆,尝试查看默认用户创建的表t02,发现没有权限:

而切换至默认超级用户后可以随意查看其他普通用户创建的表,这说明普通用户之间互相查看/修改表内容也需要授权即:
sql
grant all on table 表名 to 用户名;
同理针对t02,我们登陆test01用户将该表为claem用户授权,之后claem可以正常访问该表。

注意任何对表的授权命令,均需要表所属用户登陆才能执行,此处尝试使用test01用户为claem授权表t01失败,test01用户仅能授权自己的表t02,授权成功后claem可以正常访问t02。
同理,针对数据库的修改也需要数据库所属用户授权,才能在数据库里执行建表等操作。
Linux环境使用小记
待更新..
