Ошибка PostgreSQL: Fatal: роль "имя пользователя" не существует
Я настраиваю свой PostgreSQL 9.1. Я не могу ничего сделать с PostgreSQL: не могу createdb
, не может createuser
; все операции возвращают сообщение об ошибке
Fatal: role h9uest does not exist
h9uest
- мое имя учетной записи, а я sudo apt-get install
PostgreSQL 9.1 в этой учетной записи.
Аналогичная ошибка сохраняется для учетной записи root
.
Ответы
Ответ 1
Используйте postgres
пользователя операционной системы для создания вашей базы данных - если вы не настроили роль базы данных с необходимыми привилегиями, соответствующими пользователю вашей операционной системы с таким же именем (h9uest
в вашем случае):
sudo -u postgres -i
Как рекомендуется здесь или здесь.
Тогда попробуйте еще раз. Напечатайте exit
когда закончите с работой как системный пользователь postgres
Или выполните одну команду createuser
как postgres
с sudo
, как продемонстрировано drees в другом ответе.
Смысл заключается в том, чтобы использовать пользователя операционной системы, совпадающего с ролью базы данных с тем же именем, для предоставления доступа через ident
аутентификацию. postgres
- это пользователь операционной системы по умолчанию, который инициализировал кластер базы данных. Руководство:
Для начальной загрузки системы базы данных, недавно инициализированная система всегда содержит одну предопределенную роль. Эта роль всегда является "суперпользователем", и по умолчанию (если она не изменена при запуске initdb
) она будет иметь то же имя, что и пользователь операционной системы, который инициализировал кластер базы данных. Обычно эта роль будет называться postgres
. Чтобы создать больше ролей, сначала необходимо подключиться к этой начальной роли.
Я слышал о странных настройках с нестандартными именами пользователей или о том, где пользователь операционной системы не существует. Вам нужно будет адаптировать свою стратегию там.
Читайте о ролях базы данных и аутентификации клиента в руководстве.
Ответ 2
После попытки решения многих других народов и без успеха этот ответ, наконец, помог мне.
fooobar.com/questions/13172/...
Короче говоря, работая
sudo -u postgres createuser owning_user
создает роль с именем owning_user (в данном случае h9uest). После этого вы можете запустить rake db:create
из терминала под любым именем учетной записи, которое вы создали, без необходимости входить в среду postgres.
Ответ 3
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;
Ответ 4
Установка postgres с помощью apt-get
не создает роль пользователя или базу данных.
Чтобы создать роль суперпользователя и базу данных для вашей личной учетной записи пользователя:
sudo -u postgres createuser -s $(whoami); createdb $(whoami)
Ответ 5
Это работает для меня:
psql -h localhost -U postgres
Ответ 6
Рабочий метод,
-
vi /etc/postgresql/9.3/main/pg_hba.conf
-
local all postgres peer
здесь измените равноправный на доверие
-
перезагрузка, sudo service postgresql restart
-
теперь попробуйте, psql -U postgres
Ответ 7
Я установил его на 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
Ответ 8
В приглашении локального пользователя, а не в командной строке пользователя root, введите
sudo -u postgres createuser <local username>
Затем введите пароль для локального пользователя.
Затем введите предыдущую команду, в которой генерируется "имя пользователя" роли. "
Выше шаги решили проблему для меня.
Если нет, отправьте сообщения о терминалах для вышеуказанных шагов.
Ответ 9
Для версии Postgres 9.5 используйте следующую команду:
psql -h localhost -U postgres
Надеюсь, это поможет.
Ответ 10
Создание кластера БД вручную решило проблему в моем случае.
По какой-то причине, когда я установил postgres, "исходная БД" не была создана. Выполнение initdb
мне.
Это решение представлено в PostgreSQL Wiki - Первые шаги:
initdb
Обычно установка postgres в вашей ОС создает "начальную БД" и запускает демон сервера postgres. Если нет, то вам нужно запустить initdb
Ответ 11
Следуйте этим шагам, и это сработает для вас:
- run
msfconsole
- Тип db_console
- Некоторая информация будет показана вам, вы выбрали информацию, которая говорит вам сделать:
db_connect user:[email protected]:port.../database
извините, я не помню, но он как этот, затем заменяет пользователя и пароль, а также хост и базу данных информацией включен в database.yml
в пространстве: /usr/share/metasploit-framework/config
- вы увидите. пересоздание кэша модели в фоновом режиме.
- Введите apt-get update && & & apt-get upgrade после обновления перезапустите терминал и обеденный msfconsole, и он работает, вы можете проверить, что, введя
msfconsole: msf>db_status
, вы увидите, что он подключен.
Ответ 12
psql postgres
postgres=# CREATE ROLE username superuser;
postgres=# ALTER ROLE username WITH LOGIN;
Ответ 13
Для пользователей Windows: psql -U postgres
Вы должны увидеть интерфейс командной строки для PostgreSQL: postgres=#
Ответ 14
сбросить и восстановить с помощью --no-owner --no-privileges
flags
например
dump - pg_dump --no-owner --no-privileges --format=c --dbname=postgres://userpass:[email protected]:5432/schemaname >/tmp/full.dump
restore - pg_restore --no-owner --no-privileges --format=c --dbname=postgres://userpass:[email protected]:5432/schemaname/tmp/full.dump
Ответ 15
Удаление всего и сохранение 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