Bạn có thể ngăn chặn các kết nối trong tương lai:
REVOKE CONNECT ON DATABASE thedb FROM public;
(và có thể cả những người dùng / vai trò khác; xem \l+
trong psql
)
Sau đó, bạn có thể chấm dứt tất cả các kết nối với db này ngoại trừ db của riêng bạn:
SELECT pid, pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = current_database() AND pid <> pg_backend_pid();
Trên các phiên bản cũ hơn pid
được gọi là procpid
vì vậy bạn sẽ phải đối phó với điều đó.
Vì bạn đã thu hồi CONNECT
quyền, mọi thứ đang cố gắng kết nối tự động sẽ không thể thực hiện được nữa.
Bây giờ bạn sẽ có thể bỏ DB.
Điều này sẽ không hoạt động nếu bạn đang sử dụng kết nối siêu người dùng cho các hoạt động bình thường, nhưng nếu bạn đang làm điều đó, bạn cần phải khắc phục sự cố đó trước.
Sau khi hoàn tất việc xóa cơ sở dữ liệu, nếu bạn tạo lại cơ sở dữ liệu, bạn có thể thực thi lệnh dưới đây để khôi phục quyền truy cập
GRANT CONNECT ON DATABASE thedb TO public;