Mac搭建postgreSQL 一些基础命令与注意事项

目录

概要

[PostgreSQL 的特点以及概念 - 个人观点](#PostgreSQL 的特点以及概念 - 个人观点)

​编辑

Linux环境使用小记


概要

本文仅作学习参考 仅代表个人学习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环境使用小记

待更新..

相关推荐
程序猿20231 天前
MySQL的逻辑存储结构
java·数据库·mysql
2301_800256111 天前
第九章:空间网络模型(空间网络查询、数据模型、Connected、with Recursive、pgRouting)
网络·数据库·算法·postgresql·oracle
霖霖总总1 天前
[小技巧19]MySQL 权限管理全指南:用户、角色、授权与安全实践
数据库·mysql·安全
heartbeat..1 天前
Spring AOP 全面详解(通俗易懂 + 核心知识点 + 完整案例)
java·数据库·spring·aop
麦聪聊数据1 天前
MySQL并发与锁:从“防止超卖”到排查“死锁”
数据库·sql·mysql
AC赳赳老秦1 天前
DeepSeek 私有化部署避坑指南:敏感数据本地化处理与合规性检测详解
大数据·开发语言·数据库·人工智能·自动化·php·deepseek
YMatrix 官方技术社区1 天前
YMatrix 存储引擎解密:MARS3 存储引擎如何超越传统行存、列存实现“时序+分析“场景性能大幅提升?
开发语言·数据库·时序数据库·数据库架构·智慧工厂·存储引擎·ymatrix
辞砚技术录1 天前
MySQL面试题——索引2nd
数据库·mysql·面试
linweidong1 天前
C++thread pool(线程池)设计应关注哪些扩展性问题?
java·数据库·c++