Xin chào, tôi đang cố gắng tạo vai trò đăng nhập (người dùng) với khả năng sửa đổi cơ sở dữ liệu khá tối thiểu. Họ sẽ có thể chọn, xóa, tạo các kích hoạt, chèn và cập nhật. Sau đó, tôi muốn có nhiều tài khoản là thành viên của người dùng để họ có cùng quyền nhưng tôi có thể đăng nhập các chỉnh sửa cho từng người dùng.
Tôi đang sử dụng pgadmin cho thiết kế cơ sở dữ liệu của mình và chương trình của tôi truy cập điều này với QtQuery.
Thông báo lỗi tôi nhận được bị Qt bắt gặp khi cố gắng chọn một số dữ liệu làm bài kiểm tra. Khi tôi chạy mã giống như chủ sở hữu cơ sở dữ liệu và siêu người dùng, tôi không gặp vấn đề gì.
bool run_query(const QString & q){
QSqlDatabase db = QSqlDatabase::database("default");
QSqlQuery query(db);
query.exec(q);
if (!query.isActive()){
QMessageBox::warning(0, QObject::tr("Database Error"),
query.lastError().text());
return false;
}
while (query.next()){
QString title = query.value(0).toString();
std::cerr << qPrintable(title) << std::endl;
}
return true;
}
run_query("Select forename from contacts;");
LRI: quyền bị từ chối cho các liên hệ quan hệ QPSQL: Không thể tạo truy vấn
Cho đến nay tôi đã tạo ra vai trò (người dùng).
-- Role: user
-- DROP ROLE "user";
CREATE ROLE "user" LOGIN
ENCRYPTED PASSWORD 'md54d45974e13472b5a0be3533de4666414'
NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
COMMENT ON ROLE "user" IS 'Low level user';
Như điều này đã cho các vấn đề trước đó. Tôi đã thử thêm quyền cho công khai cho cơ sở dữ liệu nhưng điều này cũng không hoạt động.
Bây giờ tôi không biết tìm giải pháp ở đâu. Bất kỳ sự giúp đỡ nào cũng được đánh giá cao. Cảm ơn.
public
cơ sở dữ liệu là không cần thiết (nhưpublic
cóconnect, temporary
theo mặc định) và sẽ không dẫn đến một khoản trợ cấp đệ quy để schemas hoặc bảng trong những schemas. Xem postgresql.org/docs/current/static/sql-grant.html và postgresql.org/docs/current/static/...