Hallo, ich versuche, eine Anmelderolle (Benutzer) mit einer relativ geringen Fähigkeit zum Ändern der Datenbank zu erstellen. Sie sollten in der Lage sein, Trigger auszuwählen, zu löschen, zu erstellen, einzufügen und zu aktualisieren. Ich möchte dann mehrere Konten haben, die Mitglieder des Benutzers sind, damit sie die gleichen Berechtigungen haben, aber ich kann Änderungen für einzelne Benutzer protokollieren.
Ich verwende pgadmin für mein Datenbankdesign und mein Programm greift mit QtSQL darauf zu.
Die Fehlermeldung, die ich erhalte, wird von Qt abgefangen, wenn versucht wird, einige Daten als Test auszuwählen. Wenn ich denselben Code wie der Datenbankbesitzer und der Superuser ausführe, habe ich keine Probleme.
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;");
FEHLER: Berechtigung für Beziehungskontakte verweigert QPSQL: Abfrage kann nicht erstellt werden
Bisher habe ich die Rolle (Benutzer) erstellt.
-- 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';
Da dies die vorherigen Probleme gab. Ich habe versucht, öffentliche Berechtigungen für die Datenbank hinzuzufügen, aber dies hat auch nicht funktioniert.
Jetzt habe ich keine Ahnung, wo ich nach einer Lösung suchen soll. Jede Hilfe wird sehr geschätzt. Vielen Dank.
public
auf die Datenbank redundant (wiepublic
hatconnect, temporary
standardmäßig) und wird nicht zu einem rekursiven Zuschuss Schemata oder Tabellen in diesen Schemata. Siehe postgresql.org/docs/current/static/sql-grant.html und postgresql.org/docs/current/static/…