Я изучил некоторые PostgreSQL. В принципе меня учили создавать пользователя postgress с тем же именем, что и пользователь моего linux.

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

Я попробовал это:

  1. sudo -u postgres psql postgres
  2. postgres = # создать пользователя myuser с паролем 'myuserpassword' создалb;
    СОЗДАТЬ РОЛЬ

Затем я пытаюсь получить доступ к базе данных template1 с только что созданным пользователем, используя:

psql template1 myuser

Когда я psql template1 и затем tab, я не получаю пользователя "myuser" и не знаю почему.

Спасибо за помощь

1 ответ1

1

Когда я набираю psql template1 и затем tab, я не получаю пользователя "myuser" и не знаю почему.

Это программируемая функция завершения bash, которая используется здесь. Похоже, что для psql , tab не предлагает список имен пользователей в командной строке, когда курсор находится после имени базы данных. Однако, если он создает этот список, когда курсор находится после -U .

Пока не ясно, как вам мешает создавать базу данных.

Предполагая, что вы можете войти в psql с помощью psql template1 myuser , просто введите команду SQL

CREATE DATABASE dbname;

Если этот вызов psql завершается неудачно, возможно, это связано с тем, что политика pg_hba.conf для соединения с сокетом домена Unix является peer . Там будет явное сообщение об ошибке, говорящее так.

В этом случае используйте psql -U username -h localhost -d template1

Другой способ - создать базу данных из учетной записи суперпользователя (как правило, postgres) так же, как вы создали пользователя, и оставить его в собственности этого пользователя (опция OWNER CREATE DATABASE).

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