Я работаю над базой данных Amazon RDS postgresql, где я знаю, что была какая-то проблема с общедоступной схемой (возможно, она была удалена). Но, видимо, схема существует, и в любом случае проблема не решена. Вот пример сеанса с недавно созданной пустой базой данных:
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
Любой намек? Что я должен искать?
Решаемые. Благодаря ответу Даниэля Верите я решил следующее:
grant usage on schema public to public;
grant create on schema public to public;
Это разрешения по умолчанию для общедоступной схемы?
У меня есть один пользователь, который может получить доступ к базе данных, так что я думаю, что в любом случае это не может повысить риски безопасности
Я думаю, что я должен сделать такую же модификацию на template1 . Это правильно? Как я могу проверить правильность разрешений в template1 (скажем, значения по умолчанию)?