Ошибка 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
, Чтобы создать больше ролей, сначала необходимо подключиться к этой начальной роли.
Я слышал о странных установках с нестандартными именами пользователей или о том, где пользователь операционной системы не существует. Вам нужно будет адаптировать свою стратегию там.
Читайте о ролях базы данных и аутентификации клиента в руководстве.
После попытки найти решения многих других людей, но безуспешно, этот ответ, наконец, помог мне.
Короче говоря, бег
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;
Установка 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
Надеюсь, это поможет.
Метод работы,
vi /etc/postgresql/9.3/main/pg_hba.conf
local all postgres peer
здесь изменить сверстников доверятьзапустить снова,
sudo service postgresql restart
сейчас попробуй,
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
Выполните эти шаги, и это будет работать для вас:
- бежать
msfconsole
- введите db_console
- некоторая информация будет показана вам, выбрав информацию, которая скажет вам сделать:
db_connect user:pass@host:port.../database
извините, я не помню этого, но вот так, затем замените пользователя и пароль, а также хост и базу данных информацией, включенной вdatabase.yml
в положении:/usr/share/metasploit-framework/config
- ты увидишь. восстановление кеша модели в фоновом режиме.
- Наберите 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 работать.
- В вашем терминале найдите папку Application Support с помощью следующей команды. / Users / [имя пользователя] / library / application support
- Удалите приложение Postgres.
- Переустановите приложение, и оно должно работать нормально.
Для меня сработало что-то простое, например, изменение порта с 5432 на 5433.