PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Postgresql - không thể thả cơ sở dữ liệu do một số kết nối tự động với DB

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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách chuyển đổi Dấu thời gian Unix thành Giá trị Ngày / Giờ trong PostgreSQL

  2. Mẫu bảng và các phương pháp khác để lấy các bộ số ngẫu nhiên

  3. Django duy nhất cùng nhau ràng buộc thất bại?

  4. Tự cấp phép tài khoản người dùng trong PostgreSQL thông qua quyền truy cập ẩn danh không đặc quyền

  5. PostgreSQL Streaming Replication so với Logical Replication