当前位置:  开发笔记 > 数据库 > 正文

如何从Postgres数据库中删除用户

如何解决《如何从Postgres数据库中删除用户》经验,为你挑选了4个好方法。

我有以下postgres用户,我可以通过在终端中调用\ du命令来查看,如下所示:

postgres=# \du 

                            List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication | {}
 tutorial1 |                                                | {}

根据postgres文档,我应该能够通过输入以下命令来删除名为"tutorial1"的用户:

postgres=# DROP USER tutorial1

但是,当我使用该命令时没有任何反应.该文档没有提供任何关于它为什么不起作用的提示,也没有提供明确的示例.

那就是说 - 放弃这个用户的命令是什么?



1> Sasha Glaser..:

如果您发现自己(像我一样)因为您无法删除用户,以下模板可能会有所帮助:

REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM tutorial1;
REVOKE ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public FROM tutorial1;
REVOKE ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public FROM tutorial1;
DROP USER tutorial1;

用户可能拥有其他模式的权限,在这种情况下,您必须运行相应的REVOKE行,并将"public"替换为正确的模式.要显示用户的所有模式和权限类型,我编辑了\ dp命令来进行此查询:

SELECT 
  n.nspname as "Schema",
  CASE c.relkind 
    WHEN 'r' THEN 'table' 
    WHEN 'v' THEN 'view' 
    WHEN 'm' THEN 'materialized view' 
    WHEN 'S' THEN 'sequence' 
    WHEN 'f' THEN 'foreign table' 
  END as "Type"
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE pg_catalog.array_to_string(c.relacl, E'\n') LIKE '%postgres%';

我不确定哪些特权类型对应于在TABLES,SEQUENCES或FUNCTIONS上撤销,但我认为它们都属于三者之一.


如果我已经在该模式上向用户授予了"usage",我必须"从user_y"撤销架构schema_x的所有权限.

2> Patrick Herr..:

我浪费了太多时间试图找到所有要放松的东西.除了以上(或可能作为完整替代),请参阅类似问题的答案:https://stackoverflow.com/a/11750309/647581

DROP OWNED BY your_user;
DROP USER your_user;

为我做了诀窍



3> Shubho Shaha..:

你的命令没问题,但你忘了把它放在;命令的末尾.

试试这样吧

postgres=# DROP USER tutorial1; (Note I put semicolon at the end)


@kabrice:那个downvote是错误的.对象依赖于角色这一事实与如何运行语句以删除角色的问题无关

4> Benyamin Jaf..:

首先在Ubuntu终端操作:

$ sudo -su postgres
$ psql postgres

然后在postgres终端:

# \du
# drop user 'user_name';
# \du

[ 注意 ]:

不要忘记分号 ";"

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有