Ошибка PostgreSQL: Fatal: роль "username" не существует

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

Fatal: role h9uest does not exist

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

20 ответов

Решение

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

sudo -u postgres -i

Как рекомендуется здесь или здесь.

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

Или выполнить одну команду createuser как postgres с sudoКак продемонстрировано Drees в другом ответе.

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

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

Я слышал о странных установках с нестандартными именами пользователей или о том, где пользователь операционной системы не существует. Вам нужно будет адаптировать свою стратегию там.

Читайте о ролях базы данных и аутентификации клиента в руководстве.

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

/questions/8619324/createuser-ne-udalos-podklyuchitsya-k-baze-dannyih-postgres-fatal-rol-tom-ne-suschestvuet/8619329#8619329

Короче говоря, бег

sudo -u postgres createuser owning_user

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

sudo su - postgres

psql template1

создание роли в pgsql с привилегией "superuser"

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;

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

psql -h localhost -U postgres

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

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

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

psql postgres

postgres=# CREATE ROLE username superuser;
postgres=# ALTER ROLE username WITH LOGIN;

Я проверил работоспособность с помощью docker-compose.

      healthcheck:
  test: ['CMD-SHELL', 'pg_isready']
  interval: 5s
  timeout: 5s
  retries: 5

Если у вас также есть это изменение пользователя:

      healthcheck:
  test: ['CMD-SHELL', 'pg_isready -U postgres'] # <<<---
  interval: 5s
  timeout: 5s
  retries: 5

Для версии Postgres 9.5 используйте следующую команду:

psql -h localhost -U postgres

Надеюсь, это поможет.

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

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

  4. сейчас попробуй, psql -U postgres

Для пользователей Windows: psql -U postgres

Вы должны увидеть интерфейс командной строки для PostgreSQL: postgres=#

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

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

Вручную инициализировать стартер БД, решил это, в моем случае.

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

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

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

initdb

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

      sudo -u postgres createuser --superuser $USER

sudo -u postgres createdb $USER

Это определенно должно сработать для вас.

Сбросить и восстановить с --no-owner --no-privileges флаги

например

сбросить - pg_dump --no-owner --no-privileges --format=c --dbname=postgres://userpass:username@postgres:5432/schemaname > /tmp/full.dump

восстановить - pg_restore --no-owner --no-privileges --format=c --dbname=postgres://userpass:username@postgres:5432/schemaname /tmp/full.dump

Выполните эти шаги, и это будет работать для вас:

  1. бежать 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 вы увидите, что это связано.

для тех, кто использует докер и правильно следовал инструкциям из официального документа, если вы все еще столкнулись с этой проблемой, ПЕРЕЗАГРУЗИТЕ окна и повторите попытку.

Удаление всего и сохранение 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

Выполните следующие действия, чтобы заставить postgres работать.

  1. В вашем терминале найдите папку Application Support с помощью следующей команды. / Users / [имя пользователя] / library / application support
  2. Удалите приложение Postgres.
  3. Переустановите приложение, и оно должно работать нормально.

Для меня сработало что-то простое, например, изменение порта с 5432 на 5433.

Другие вопросы по тегам