Ошибка PostgreSQL: фатальная: роль "имя пользователя" не существует

я настраиваю свой PostgreSQL 9.1. Я ничего не могу сделать с PostgreSQL: не могу createdb, не может createuser; все операции возвращают сообщение об ошибке

Fatal: role h9uest does not exist

h9uest это имя моей учетной записи, и я sudo apt-get install в PostgreSQL 9.1 под этой учетной записью.
Аналогичная ошибка сохраняется для

11 ответов


использовать пользователь операционной системы postgres для создания базы данных-до тех пор, пока вы не настроили база данных роль с необходимыми привилегиями, которая соответствует пользователю вашей операционной системы с тем же именем (h9uest в вашем случае):

sudo -u postgres -i

как было рекомендовано здесь или здесь.

затем повторите попытку. Тип exit когда сделано с работать как потребитель системы postgres.

или выполнить одну команду createuser as postgres С sudo, как продемонстрировано drees в другой ответ.

дело в том, чтобы использовать пользователя операционной системы, соответствующего роли базы данных с тем же именем, чтобы получить доступ через ident проверка подлинности. postgres - пользователь операционной системы по умолчанию, инициализировавший кластер базы данных. инструкции:

для загрузки системы базы данных, недавно инициализированный система всегда содержит одну предопределенную роль. Эта роль всегда "суперпользователь" и по умолчанию (если не изменено при запуске initdb) это будет иметь то же имя, что и инициализированный пользователь операционной системы кластер баз данных. Обычно, эта роль будет называться postgres. Чтобы создать больше ролей, вы сначала должны подключиться как это первоначальная роль.

я слышал о нечетных настройках с нестандартными именами пользователей или где пользователь операционной системы не существует. Там тебе придется адаптировать свою стратегию.

читать про роли базы данных и проверка подлинности клиента в руководстве.


после попытки решения многих других народов, и безуспешно, этот ответ, наконец, помог мне.

https://stackoverflow.com/a/16974197/2433309

короче, работает

sudo -u postgres createuser owning_user

создает роль с именем owning_user (в данном случае h9uest). После этого вы можете запустить rake db:create из терминала под любым именем учетной записи, которое вы настроили без необходимости входить в среду postgres.


sudo su - postgres

psql template1

создание роли на pgsql с привилегией "суперпользователя"

CREATE ROLE username superuser;
eg. CREATE ROLE demo superuser;

затем создайте пользователя

CREATE USER username; 
eg. CREATE USER demo;

назначение прав для пользователей

GRANT ROOT TO username;

а затем включите логин этого пользователя, чтобы вы могли запустить, например:psql template1, от нормальных $ терминала:

ALTER ROLE username WITH LOGIN;

установка postgres с помощью apt-get не создает роль пользователя или базу данных.

чтобы создать роль суперпользователя и базу данных для вашей личной учетной записи пользователя:

sudo -u postgres createuser -s $(whoami); createdb $(whoami)


это работает для меня:

psql -h localhost -U postgres

метод работы,

  1. vi /etc/postgresql/9.3/main/pg_hba.conf
  2. local all postgres peer вот перемена peer to доверие
  3. перезагрузка sudo service postgresql restart

  4. теперь попробуйте psql -U postgres


в приглашении локального пользователя, а не корневого, введите

sudo -u postgres createuser <local username>

введите пароль для локального пользователя.

затем введите предыдущую команду, которая сгенерировала "роль" имя пользователя " не существует."

вышеуказанные шаги решили проблему для меня. Если нет, отправьте терминальные сообщения для вышеуказанных шагов.


Я установил его на macOS и было:

cd /Applications/Postgres.app/Contents/Versions/9.5/bin
createuser -U postgres -s YOURUSERNAME
createdb YOURUSERNAME

вот источник:https://github.com/PostgresApp/PostgresApp/issues/313#issuecomment-192461641


выполните следующие действия, и он будет работать для вас :

  1. run msfconsole
  2. db_console типа
  3. некоторая информация будет показана вам выбрал информацию, которая скажет вам сделать:db_connect user:pass@host:port.../database извините, я не помню, но это похоже на это, а затем замените пользователя и пароль, хост и базу данных информацией, включенной в database.yml в закладки: /usr/share/metasploit-framework/config
  4. вы увидите. перестроение модели кэш фон.
  5. введите apt-get update & & apt-get upgrade после обновления перезапустите терминал и обед msfconsole, и он работает, вы можете проверить это, введя msfconsole: msf>db_status вы увидите, что это связано.

вручную инициализировать стартовый DB решил его, в моем случае.

выполнения initdb сделал трюк для меня.

по какой-то причине, когда я установил postgres, "начальная БД" не была создана.

чтобы решить проблему, это решение предусмотрено для Вики postgreSQL-первые шаги.

initdb, указав

обычно установка postgres на ваш ОС создает "начальную БД" и запускает демон сервера postgres. Если нет, то вам нужно будет запустить initdb, указав


удаление всего и сохранение Postgres.app:

brew cask uninstall postgres
brew uninstall postgres
brew cask install postgres
rm -rf /Applications/Postgres93.app/
# shutdown any postgres instance
# open postgres.app -> "Initialize"

Я хотел PostgreSQL 9.6