hãy để tôi giúp bạn về điều này:
-
1 :bởi vì
pg_catalog
thuộc sở hữu của siêu người dùng postgres , vì vậy hãy đảm bảo bạn đăng nhập vào máy chủ với vai trò này:quyền lược đồ pg_catalog -
thứ 2 :đảm bảo rằng bạn kết nối với bên phải cơ sở dữ liệu cần CẤP / THU HỒI quyền trên. GRANT / REVOKE chỉ ảnh hưởng đến hiện tại cơ sở dữ liệu mà bạn đã kết nối. Điều đó có nghĩa là sau khi bạn đăng nhập bằng tài khoản superuser, hãy phát hành: \ c [the db] để kết nối với cơ sở dữ liệu đó, trình bao sẽ thay đổi thành: [the db] =>
-
ngày 3 :bảng trong
pg_catalog
mặc định đã cấp SELECT cho PUBLIC:các bảng trong pg_catalog. Vì vậy, bạn phải chạy REVOKE SELECT FROM PUBLIC và sau đó CẤP CHỌN cho người dùng thích hợp:KHẮC PHỤC LỰA CHỌN TRÊN TẤT CẢ CÁC BẢNG TRONG SCHEMA pg_catalog TỪ CÔNG KHAI;
CẤP CHỌN TRÊN BẢNG [bảng] CHO [người dùng];
Đối với bảng danh sách trong cơ sở dữ liệu: pg_class và pg_namespace .
Và đó là tất cả :)