Ошибка 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)
метод работы,
vi /etc/postgresql/9.3/main/pg_hba.conf
-
local all postgres peer
вот перемена peer to доверие перезагрузка
sudo service postgresql restart
теперь попробуйте
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
выполните следующие действия, и он будет работать для вас :
- run
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
вы увидите, что это связано.
вручную инициализировать стартовый 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