У меня Mac под управлением OS X Lion (10.7.5) с установленным PostgreSQL 9.2.4. Я инициализировал кластер базы данных и запустил сервер, все как пользователь postgres . Когда я пытаюсь получить доступ к определенным каталогам, связанным с моей установкой PostgreSQL, или выполнить определенные двоичные файлы, мне сначала нужно переключиться на пользователя postgres . Например:

# Ideally I'd want this to work:
my_name$ psql
psql: FATAL:  role "my_name" does not exist

# I'd settle for this working, but it doesn't
my_name$ sudo psql
psql: FATAL:  role "root" does not exist

# I don't understand why this doesn't work but the next things does
my_name$ sudo su postgres psql
/opt/local/lib/postgresql92/bin/psql: /opt/local/lib/postgresql92/bin/psql: cannot execute binary file

# This works
my_name$ sudo su postgres
sh$ psql
psql (9.2.4)
Type "help" for help.

Другой пример:

my_name$ cd /opt/local/var/db/postgresql92/defaultdb
-bash: cd: /opt/local/var/db/postgresql92/defaultdb/: Permission denied

my_name$ sudo su postgres cd /opt/local/var/db/postgresql92/defaultdb
my_name$ pwd
/Users/my_name

my_name$ sudo su postgres
sh$ cd /opt/local/var/db/postgresql92/defaultdb
sh$ pwd
/opt/local/var/db/postgresql92/defaultdb
  1. Почему sudo su postgres <cmd> не работает, но когда я разделяю шаги по переключению пользователя и затем вызываю команду, она работает?
  2. Есть ли другой способ, чтобы мне не приходилось каждый раз переключать пользователей?
  3. В более общем смысле, есть ли способ предоставить пользователю все разрешения другого пользователя в дополнение к тем, которые у него уже есть? Например, я могу добавить все разрешения пользователя postgres к разрешениям пользователя my_name ?

1 ответ1

0

У вас должен быть пользователь, созданный в вашей базе данных postgresql и разрешающий его с localhost в вашем файле pg_hba.conf - в файле множество примеров различных опций.

Тогда вы можете сделать:

psql -H localhost -U myuser

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .