Создание табличного пространства в postgresql - PullRequest
12 голосов
/ 06 марта 2011

Я пытаюсь создать табличное пространство в postgres, но у меня возникают проблемы с владением.Я использую команду:

CREATE TABLESPACE magdat OWNER maggie LOCATION '/home/john/BSTablespace'

Я получаю сообщение об ошибке:

ERROR:  could not set permissions on directory "/home/john/BSTablespace": Operation not permitted

Папка принадлежит postgres: postgres, я попытался изменить ее на Мэгги, но еслиЯ иду:

chown maggie:postgres /home/john/BSTablespace

Я получаю:

chown: invalid user: `maggie:postgres'

Почему пользователь не существует?Если я перечислю пользователей внутри postgres, то это произойдет.Есть идеи, что я могу делать не так?

Ответы [ 2 ]

21 голосов
/ 06 марта 2011

Я бы рискнул предположить, что проблема заключается в разрешениях родительского каталога "/ home / john". Ваш домашний каталог, вероятно, настроен так, что только ваш пользователь имеет к нему доступ (т.е. chmod 700) (хорошо, если ваш домашний каталог - chmod 700, не меняйте его).

Делать что-то вроде:

mkdir /BSTablespace
chown postgres:postgres /BSTablespace

, а затем

CREATE TABLESPACE magdat OWNER maggie LOCATION '/BSTablespace';

должно работать нормально.

Относительно пользователя Мэгги: пользователи базы данных не такие же, как пользователи ОС. Это не значит, что вы не можете иметь пользователя в обоих местах по имени Мэгги - но вам нужно создать пользователя как в базе данных, так и в ОС, чтобы это произошло.

1 голос
/ 30 июля 2017

Когда вы устанавливаете Postgres на Mac и пытаетесь использовать PgAdmin для создания ваших баз данных, табличных пространств и т. Д. Вы должны знать, что PgAdmin Utility работает под учетной записью postgres, которую он создал, когда выустановил базу данных postgres и утилиты.

postgres account является частью _postgres group

(команда dscacheutil -q group|grep -i postgres выведет список группы, связанной с учетной записью postgres)

Лучшей практикой будет создание нового каталога под root (/) для размещения табличных пространств (давайте назовем его /postgresdata, а затем сделаем postgres:_postgres владельцами этого каталога, используя следующую команду)

sudo chown postgres:_postgres /postgresdata

Это должно сделать это для вас.Затем вы можете создать подкаталог в /postgresdata для каждого уникального табличного пространства

...