Tôi cần hạn chế người dùng, chỉ truy cập vào một bảng sơ đồ cụ thể. Do đó, tôi đã thử truy vấn và đăng nhập dưới dạng user1_gmail_com. Nhưng tôi đã nhận được lỗi sau khi tôi cố gắng duyệt bất kỳ bảng lược đồ nào.LRI: quyền bị từ chối đối với giản đồ user1_gmail_com tại ký tự 46
Query của tôi:
SELECT clone_schema('my_application_template_schema','user1_gmail_com');
CREATE USER user1_gmail_com WITH PASSWORD 'myloginpassword';
REVOKE ALL ON ALL TABLES IN SCHEMA user1_gmail_com FROM PUBLIC;
GRANT SELECT ON ALL TABLES IN SCHEMA user1_gmail_com TO user1_gmail_com;
SQL lỗi:
ERROR: permission denied for schema user1_gmail_com at character 46
In statement:
SELECT COUNT(*) AS total FROM (SELECT * FROM "user1_gmail_com"."organisations_table") AS sub
Cập nhật Query làm việc:
SELECT clone_schema('my_application_template_schema','user1_gmail_com');
CREATE USER user1_gmail_com WITH PASSWORD 'myloginpassword';
REVOKE ALL ON ALL TABLES IN SCHEMA user1_gmail_com FROM PUBLIC;
GRANT USAGE ON SCHEMA user1_gmail_com TO user1_gmail_com;
GRANT SELECT ON ALL TABLES IN SCHEMA user1_gmail_com TO user1_gmail_com;
Vì vậy, 'clone_schema()' làm gì? –
Phải mất bản sao của tất cả các bảng trong my_application_template_schema thành user1_gmail_com schema.https: //wiki.postgresql.org/wiki/Clone_schema – Ramprasad
Cả 'clone_schema()' lẫn ví dụ của bạn đều không chứa câu lệnh xảy ra lỗi. Vậy câu lệnh đó tạo ra lỗi từ đâu? –