【发布时间】:2021-02-12 20:37:04
【问题描述】:
我有点困惑为什么我不能删除我的数据库,所以在连接到我的 rds postgres 实例之后
psql --host=mu_user.amazonaws.com --port=5432 --username=my_user --password --dbname=postgres
我已撤销与要删除的数据库的新连接
REVOKE CONNECT ON DATABASE mydb FROM public;
那么我已经终止了与
的所有连接SELECT pid, pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = 'mydb' AND pid <> pg_backend_pid();
之后,当我想删除数据库时,我仍然不能,因为它会说
ERROR: database "mydb" is being accessed by other users
DETAIL: There are 10 other sessions using the database.
如果我检查实时连接
SELECT
pid
,datname
,usename
,application_name
,client_hostname
,client_port
,backend_start
,query_start
,query
,state
FROM pg_stat_activity
WHERE state = 'active';
不会有,但是如果我将活动更改为空闲,我可以看到一堆,并且在尝试使用 pg_terminate_backend(pid) 杀死它们之后,我再次无法删除数据库并且我再次遇到相同的错误,所以有人可以请帮助我理解我在这里做错了什么?
那些空闲且始终出现的连接由my_user 提供,他也是超级用户。
【问题讨论】:
-
数据库的权限是什么?连接的用户是超级用户吗?
-
@LaurenzAlbe 是的,我的用户是超级用户。
-
@iLuvLogix 好吧,我正在尝试这样做,但发现我自己处于一个循环中,现在可以删除它,总是有空闲连接需要终止
-
我想知道阻止
DROP DATABASE的其他连接 - 它们是由超级用户创建的吗?
标签: postgresql