Ich arbeite an einer Amazon RDS-Postgresql-Datenbank, bei der ich weiß, dass ein Problem mit dem öffentlichen Schema aufgetreten ist (möglicherweise wurde es gelöscht). Aber anscheinend existiert das Schema und trotzdem ist das Problem nicht gelöst. Hier ist eine Beispielsitzung mit einer neu erstellten leeren Datenbank:
mydb=> CREATE TABLE distributors (
mydb(> did integer,
mydb(> name varchar(40) UNIQUE
mydb(> );
ERROR: no schema has been selected to create in
mydb=> show search_path;
search_path
----------------
"$user",public
(1 row)
mydb=> create schema public;
ERROR: schema "public" already exists
Irgendein Hinweis? Wonach soll ich suchen?
Gelöst Dank der Antwort von Daniel Vérité habe ich folgendes gelöst:
grant usage on schema public to public;
grant create on schema public to public;
Sind dies die Standardberechtigungen für das öffentliche Schema?
Ich habe einen einzelnen Benutzer, der auf die Datenbank zugreifen kann. Daher kann dies meines Erachtens kein Sicherheitsrisiko darstellen.
Ich denke, ich sollte die gleiche Änderung an template1 vornehmen . Ist es richtig? Wie kann ich überprüfen, ob die Berechtigungen in template1 korrekt sind (z. B. Standardwerte)?