Как запустить команду postgresql из оболочки GCE?

Для установки PostgreSQL на GCE требуется пароль root для запуска sudo -u postgresql. Это запрашивает пароль, который мне никогда не давали.
Как мне получить этот пароль или какой-либо другой способ запускать команды postgresql из оболочки?


person Tal    schedule 31.03.2014    source источник


Ответы (3)


У вашего системного пользователя postgresql нет пароля (я утверждаю без доказательств... но я думаю, вы обнаружите, что это правда).

Обычно вы должны использовать такие команды:

# Test that YOU can use psql (as postgres) to run a query:
psql -U postgres -c 'select * from pg_catalog.pg_user;'

# Test an interactive session:
psql -U postgres my_database
my_database=# select 42 as the_answer;

# Create a new database
psql -U postgres my_database
my_database=# create database mydb;


В качестве альтернативы, вероятно, можно войти в систему следующим образом (обычно это):

sudo su postgres

И вы, вероятно, могли бы использовать это для запуска createdb. Но запускать psql от своего имени, наверное, лучше.

person mdahlman    schedule 01.04.2014
comment
Единственное разрешение, которое я смог найти в банкомате, это последнее: sudo su postgres. Оттуда команды psql работают нормально. - person Tal; 01.04.2014
comment
Здорово, что это работает как решение. Что мешало использовать psql в качестве другого пользователя? (Или в чем ошибка?) - person mdahlman; 01.04.2014

Если вы хотите запускать команды на своем сервере postgresql, вам не нужно использовать sudo, просто используйте этот синтаксис для входа в интерактивную оболочку Postgresql:

psql -U username database_name

OR

psql -U username hostname database_name

Замените имя_пользователя на ваше имя пользователя postgresql, имя хоста (если оно не работает на том же сервере) на имя хоста сервера и имя_базы_данных на имя вашего база данных. Например:

psql -U postgressql customers
person IanGSY    schedule 31.03.2014
comment
спасибо, но это не работает для команды createdb или команды createuser, которую я пытаюсь запустить. Я запускаю psql -U postgres createdb mydb и получаю Peer authentication failed for user "postgres" - person Tal; 31.03.2014
comment
createdb -U postgres, предполагая, что ваше имя пользователя — postgres. вам нужна действующая роль с возможностью создания БД для ее использования. у тебя есть пользователь? - person Doon; 31.03.2014
comment
пользователь postgres добавляется как часть установки db. Вот строка из журнала установки: Adding user postgres to group ssl-cert. Должен признать, что я ничего не устанавливал после выдачи apt-get, но я уверен, что пользователь linux postgres существует и что пользователь базы данных по умолчанию postgres также создается автоматически. Теперь вопрос: если у вас нет возможности запустить su - postgres, как можно выполнить команду createuser? - person Tal; 31.03.2014
comment
роли postresql и системные пользователи - это две разные вещи, и они вообще не должны быть связаны, по умолчанию, если вы не укажете пользователя (роль) postgresql в командной строке с параметром -U (или --username), он будет попробуйте подключиться к серверу, используя то же имя пользователя, которое запустило команду. Вы проверили, что сервер работает и какие пользователи postgresql были созданы (не системный пользователь). - person Doon; 01.04.2014

Обычно для sudo требуется пароль вашей учетной записи пользователя. Итак, предполагая, что учетная запись, из которой вы запускаете команду, указана в файле sudoers, пароль, который она вам запрашивает, должен быть вашим собственным. Вы пробовали это, в отличие от пароля root или postgresql, которого у вас, похоже, нет (или он может даже не быть установлен).

person Doon    schedule 01.04.2014
comment
Правильно, моя учетная запись указана в файле sudoers, но у меня нет пароля для входа ни в мою учетную запись, ни в учетную запись root. Google регистрирует вас в поле GCE, используя корневые сертификаты вместо имени пользователя/пароля. Поэтому я не могу использовать - person Tal; 01.04.2014
comment
ваша учетная запись является создателем экземпляра? поскольку GCE говорит, что создатель экземпляра должен иметь sudo без пароля, вы можете попробовать sudo -s, чтобы получить корневую оболочку, или sudo su postgres - person Doon; 01.04.2014