Я пытаюсь настроить Postgres впервые, и мне нужно создать пользователя с разрешениями на чтение и создание баз данных. Однако когда я использую:
createuser username
в моем терминале я получаю следующее сообщение:
createuser: не удалось подключиться к базе данных postgres: FATAL: роль "tom" не существует
Том - моя учетная запись пользователя Ubuntu, в которую я вошел прямо сейчас. Я пытаюсь создать имя пользователя postgres, а затем делаю это, psql -U psql template1
чтобы создать базу данных и назначить ей владельца для своего приложения Rails.
database
postgresql
Том Максвелл
источник
источник
Ответы:
Вы упомянули Ubuntu, поэтому я предполагаю, что вы установили пакеты PostgreSQL из Ubuntu через apt.
Если это так, то
postgres
учетная запись пользователя PostgreSQL уже существует и настроена для доступа черезpeer
аутентификацию для сокетов unix вpg_hba.conf
. Вы можете добраться до него, выполнив команды от имениpostgres
пользователя unix, например:Все это содержится в документации Ubuntu PostgreSQL, которая является первым хитом Google для «Ubuntu PostgreSQL» и рассматривается в многочисленных вопросах о переполнении стека.
(Вы усложнили этот вопрос, опустив такие детали, как ОС и версия, на которой вы работаете, как вы установили PostgreSQL и т. Д.)
источник
pg_hba.conf
чтобы использоватьmd5
auth для этого пользователя (см. руководство); (b) Создайте пользователя ОС с тем же именем и продолжайте использоватьpeer
auth; или (c) более продвинутый, создайтеpg_ident.conf
сопоставление, чтобы позволить пользователю вашей ОС войти в систему как новый пользователь.См. Git gist с инструкциями здесь
Запустите это:
ИЛИ
в вашем терминале, чтобы попасть в postgres
postgres=#
Бегать
CREATE USER new_username;
Примечание. Замените new_username пользователем, которого вы хотите создать, в вашем случае это будет tom.
postgres=# CREATE USER new_username; CREATE ROLE
Поскольку вы хотите, чтобы этот пользователь мог создавать БД, вам необходимо изменить роль на суперпользователя.
postgres=# ALTER USER new_username SUPERUSER CREATEDB; ALTER ROLE
Чтобы подтвердить, что все прошло успешно,
postgres=# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------+----------- new_username | Superuser, Create DB | {} postgres | Superuser, Create role, Create DB, Replication | {} root | Superuser, Create role, Create DB | {} postgres=#
Обновление / модификация (для Mac):
Недавно я столкнулся с аналогичной ошибкой на своем Mac:
psql: FATAL: role "postgres" does not exist
Это произошло потому, что моя установка была настроена с суперпользователем базы данных, имя роли которого совпадает с вашим (коротким) именем для входа.
Но некоторые сценарии Linux предполагают, что суперпользователь имеет традиционное имя роли
postgres
Как я решил это?
Если вы установили с
homebrew
запуском:/usr/local/opt/postgres/bin/createuser -s postgres
/usr/local/Cellar/postgresql/10.5/bin/createuser -s postgres
ИЛИ:
/usr/local/Cellar/postgresql/10.5/bin/createuser -s new_username
ИЛИ:
/usr/local/opt/postgresql@11/bin/createuser -s postgres
/Applications/Postgres.app/Contents/Versions/10.5/bin/createuser -s postgres
PS: замените 10.5 своей версией PostgreSQL
источник
psql -U postgres
это должно помочь вам, поскольку это произойдет, если администратор не создал для вас учетную запись пользователя PostgreSQL. Также может быть, что вам было назначено имя пользователя PostgreSQL, которое отличается от имени пользователя вашей операционной системы, в этом случае вам нужно использовать переключатель -U.
источник
1- Войти как пользователь PostgreSQL по умолчанию (postgres)
2- Как пользователь postgres. Добавьте нового пользователя базы данных с помощью
createuser
команды[postgres]$ createuser --interactive
3-выход
источник
Ваша ошибка опубликована в официальной документации. Вы можете прочитать эту статью .
Я скопировал для вас причину (и добавил гиперссылки на URL-адреса) из этой статьи:
Для ваших целей вы можете:
1) Создайте учетную запись пользователя PostgreSQL:
(
-P
возможность установить пароль;-d
опция, позволяющая создавать базу данных для вашего имени пользователя 'tom'. Обратите внимание, что 'tom' - это имя пользователя вашей операционной системы. Таким образом, вы можете выполнять команды PostgreSQL безsudo
ing.)2) Теперь у вас должна быть возможность выполнять
createdb
и другие команды PostgreSQL.источник
У меня была такая же проблема, я просто делаю это
sudo su - postgres
createuser odoo -U postgres -dRSP #P для пароля ( odoo или имя пользователя, которому вы хотите предоставить доступ postgres)
источник
В Windows используйте:
C:\PostgreSQL\pg10\bin>createuser -U postgres --pwprompt <USER>
Добавить
--superuser
или--createdb
при необходимости.См. Https://www.postgresql.org/docs/current/static/app-createuser.html для получения дополнительных сведений.
источник
Если вы не хотите менять метод аутентификации (идентификатор) и путаться с pg_hba.conf, используйте это:
Сначала войдите как пользователь по умолчанию
затем войдите в psql и создайте пользователя с тем же именем, что и тот, в который вы вошли
postgres=# CREATE USER userOS WITH PASSWORD 'garbage' CREATEDB;
вы можете подтвердить своего пользователя с соответствующими ролями с помощью
postgres=# \du
После этого вы можете создать свою базу данных и проверить ее с помощью
источник
Вам нужно сначала запустить initdb. Он создаст кластер базы данных и начальную настройку
См. Раздел Как настроить postgresql в первый раз? и http://www.postgresql.org/docs/8.4/static/app-initdb.html
источник
initdb
у него не было бы запущенного сервера базы данных и приема подключений для выдачи сообщения об ошибке. Удалите, пожалуйста, этот вводящий в заблуждение ответ. (Кстати, в будущем, пожалуйста, сделайте ссылку на / docs / current / static /, чтобы избежать накопления устаревших ссылок)