输入 "help" 来获取帮助信息。
lib1=>
删除用户 user1:
自己删除自己失败:
lib1=> drop user user1;
错误: 删除角色的权限不够
lib1=>
超级用户postgres登录后,居然也不能删除用户 user1!
>psql -U postgres
用户 postgres 的口令:
psql (10。18)
输入 "help" 来获取帮助信息。
postgres=# drop user user1;
错误: 无法删除"user1"因为有其它对象倚赖它
描述: 数据库 lib1的权限
postgres=#
删除失败,看来,删除不像想象的那么简单啊。
先撤销权限,再删除。
postgres=# revoke all privileges on database lib1 from user1;
REVOKE
postgres=#
postgres=# drop user user1;
DROP ROLE
postgres=#
postgres=# select * from pg_user;
usename | usesysid | usecreatedb | usesuper | userepl | usebypassrls | passwd | valuntil | useconfig
----------+----------+-------------+----------+---------+--------------+----------+----------+-----------
postgres | 10 | t | t | t | t | ******** | |
(1 行记录)
除了权限、密码,还可以限制 用户的连接数:
CONNECTION LIMIT 连接限制
还可以 限制到期时间:
VALID UNTIL '时间戳'
还可以设置 GROUP、ROLE。
疑问:
psql中的 user、role 是同一个意思?
怎么查看视图的创建语句?
菜鸟教程:
PostgreSQL 视图是只读的,因此可能无法在视图上执行 DELETE、INSERT 或 UPDATE 语句。
但是可以在视图上创建一个触发器,当尝试 DELETE、INSERT 或 UPDATE 视图时触发,需要做
的动作在触发器内容中定义。
\? 命令:
\sf[+] FUNCNAME 显示一个函数的定义
\sv[+] VIEWNAME 显示一个视图的定义
\z [模式] 和\dp的功能相同
前后省略了很多行
原来是 \sv[+] 命令:
postgres=# \sv pg_user
CREATE OR REPLACE VIEW pg_catalog。pg_user AS
SELECT pg_shadow。usename,
pg_shadow。usesysid,
pg_shadow。usecreatedb,
pg_shadow。usesuper,
pg_shadow。userepl,
pg_shadow。usebypassrls,
'********'::text AS passwd,
pg_shadow。valuntil,
pg_shadow。useconfig
FROM pg_shadow
postgres=#
postgres=# \sv pg_group
CREATE OR REPLACE VIEW pg_catalog。pg_group AS
SELECT pg_authid。rolname AS groname,
pg_authid。oid AS grosysid,
ARRAY( SELECT pg_auth_members。member
FROM pg_auth_members
WHERE pg_auth_members。roleid = pg_authid。oid) AS grolist
FROM pg_authid
WHERE NOT pg_authid。rolcanlogin
postgres=# \sv pg_roles
CREATE OR REPLACE VIEW pg_catalog。pg_roles AS
SELECT pg_authid。rolname,
pg_authid。rolsuper,
pg_authid。rolinherit,
pg_authid。rolcreaterole,