2014-01-03 1 views
4
$ psql postgres 

postgres=# \dn 
     List of schemas 
     Name  | Owner 
--------------------+---------- 
information_schema | postgres 
pg_catalog   | postgres 
pg_toast   | postgres 
pg_toast_temp_1 | postgres 
public    | student 
(5 rows) 

Когда я вхожу в psql с пользователем postgres, он показывает, что общественность схемы принадлежит учащемуся пользователя. Тем не менее, когда я войти в Psql с учеником пользователя:Владелец изменений схемы в зависимости от того, с кем я вошел в систему как?

$ psql student 

student=> \dn 
     List of schemas 
     Name  | Owner 
--------------------+---------- 
information_schema | postgres 
pg_catalog   | postgres 
pg_toast   | postgres 
pg_toast_temp_1 | postgres 
public    | postgres 
(5 rows) 

Это показывает, что схема общественного принадлежит пользователь Postgres.

Как я могу получить доступ к публике схемы, переданной студенту-пользователю, если пользователь с привилегиями для этого считает, что это уже сделано?

ответ

9

Это недоразумение. Вы регистрируетесь в двух разных базах данных.

При запуске

$ psql postgres 

postgres это имя базы данных. При настройке по умолчанию имя пользователя базы данных происходит от имени пользователя системы, используя ident authentication автоматически. Единственным параметром считается имя базы данных. You не хочу что-то изменить в базе данных postgres, это системная база данных для задач обслуживания.

Другая база данных называется student. Каждая база данных имеет схему public с ее соответствующим владельцем.

Прочитано manual for psql или попробуйте с низким man psql.

Для передачи права собственности на схеме public в базе данных student, войдите в систему как суперпользователь:

psql -U postgres student 

Или просто (будучи Postgres пользователей системы):

psql student 

И бежать:

ALTER SCHEMA public OWNER TO student; 

Details in the manual еще раз.

 Смежные вопросы

  • Нет связанных вопросов^_^