暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PG--用户管理与登录练习记录

于志君 2024-10-28
335
  1. su - 与 su 命令是有区别的。

看下面的实验:

 su - 和 su 的区别‌:

‌su - 和 su 的主要区别在于它们切换用户时的环境变量处理方式。‌

使用 su 命令切换用户时,默认情况下不会读取目标用户的登录环境,而是保持当前用户的登录环境。而 su - 命令则会读取目标用户的登录环境,使得切换后的用户环境与目标用户一致。su - 这种方式的切换更加彻底,适合需要完全以目标用户身份执行操作的场景。

所以上面实验时开始使用的su命令,报错,postgres用户对目录 /root 没有权限。使用su - 命令就没有问题了。

2. 创建一个普通用户,授予CREATEDB 权限,并使用此普通用户登录数据库。

IMG_256

IMG_257

报错1:error: FATAL: Peer authentication failed for user "osdba"

与Oracle与MySQL相似,PG 的登录方式也是分本地登录和 TCP/IP方式登录两种。

本地登录,通过操作系统账户验证。上面登录方式,未指定-h ,默认走的本地登录方式,并没有建操作系统账户osdba,所以报错。

修改配置文件pg_hba.conf

-bash-4.2$ cd /var/lib/pgsql/12/data

-bash-4.2$ vi pg_hba.conf

在IPv4 local connections处增加一行,使用TCP方式登录,允许172.17.140.73单机通过密码验证方式连接数据库。

使用0.0.0.0/0 表示任意IP均可以访问,也可以使用172.0.0.0/0 

修改完配置文件,需要重服务使其生效,或者运行"pg_ctl reload", 或者 执行 "SELECT pg_reload_conf()" 重新加载配置文件。

IMG_258

再次使用osdba进行登录:

IMG_259

报错2:FATAL: password authentication failed for user "osdba"

属于密码问题,刚才创建用户时指定了密码,不知为何此处输入后报错。

重新修改用户密码

IMG_260

再次登录

IMG_261

报错3:error: FATAL: database "osdba" does not exist

可见创建了用户,登录时默认会使用与用户名同名的数据库。

使用\l 命令查看现有数据库,并创建数据库osdba,并指定其owner 为osdba,再登录就可以了。

IMG_262

那能使用postgres 用户进入到osdba库吗

IMG_263

PG的用户不能同时进入多个database,如果想访问其他database,须使用dblink等方式。PG的database跟MySQL的database不同。

3.权限

使用osdba用户进入postgres库

IMG_264

可见osdba用户可以进入postgres库,能看到其有哪些对象,但不能访问。

授权osdba有访问postgres库public schema下表的select权限。

IMG_265

4.查询用户的数据字典可以使用pg_catalog.pg_user视图来查询用户数据字典,这与Oracle的DBA_USERS类似.

IMG_266

5.总结

(1)注意 su - 与 su 命令是有区别的,登录pg数据库时,注意使用su - 命令, 切换为postgres用户的环境变量来访问数据库。

(2)用户登录默认进入同名数据库,使用非操作系统用户进入别的数据库需要登录时指定数据库名称。 

  psql -h -p <端口> [数据库名称] [用户名称]

(3)数据字典视图pg_user 相当于 oracle的dba_users。

最后修改时间:2024-10-29 10:58:32
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论