Создание табличного пространства в postgresql

Я пытаюсь создать табличное пространство в 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 ответов


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

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

mkdir /BSTablespace
chown postgres:postgres /BSTablespace

а то

CREATE TABLESPACE magdat OWNER maggie LOCATION '/BSTablespace';

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

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


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

на postgres account является частью _postgres группа

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