我尝试使用以下命令连接到数据库服务器:
psql -h host_ip -d db_name -U user_name --password
它显示以下行,并拒绝连接。
psql: FATAL: too many connections for role "user_name".
如何关闭活动连接? 我没有数据库的管理员权限。我只是普通用户。
陷阱22:您需要首先连接到数据库。也许您可以以其他用户身份连接?(默认情况下,具有该superuser_reserved_connections设置的某些连接保留给超级用户使用。)
superuser_reserved_connections
要获取此用户的每个连接的详细信息,请执行以下操作:
SELECT * FROM pg_stat_activity WHERE usename = 'user_name';
作为 同一用户 或超级用户,您可以取消用户的所有(其他)连接:
SELECT pg_cancel_backend(pid) -- (SIGINT) -- pg_terminate_backend(pid) -- the less patient alternative (SIGTERM) FROM pg_stat_activity WHERE usename = 'user_name' AND pid <> pg_backend_pid();
最好确保这样做是可以的。您不想以这种方式终止重要的查询(或连接)。
pg_cancel_backend()并pg_terminate_backend()在手册中。
pg_cancel_backend()
pg_terminate_backend()
您是否自己启动了其他连接?也许是您的悬挂脚本?您应该能够杀死那些(如果确定可以这样做)。
您可以调查ps哪些进程可能出错:
ps
ps -aux ps -aux | grep psql
如果您发现一个进程杀死(最好是肯定的,你就 不会 想杀死服务器):
kill 123457689 # pid of process here.
或用SIGKILL代替SIGTERM:
SIGKILL
SIGTERM
kill -9 123457689