Меню

Postgres ошибка роль не существует

ПРИМЕЧАНИЕ. Если вы установили postgres с помощью homebrew, см. комментарий от @user3402754 ниже.

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

Но первый шаг — проверить отсутствующую роль: каков результат внутри psql команды du ? В моей системе Ubuntu соответствующая строка выглядит так:

                              List of roles
 Role name |            Attributes             | Member of 
-----------+-----------------------------------+-----------
 postgres  | Superuser, Create role, Create DB | {}        

Если нет хотя бы одной роли с superuser, то у тебя проблемы 🙂

Если он есть, вы можете использовать его для входа в систему. И глядя на результат вашего l команда: разрешения для user на template0 и template1 базы данных такие же, как в моей системе Ubuntu для суперпользователя postgres. Поэтому я думаю, что ваша установка проста в использовании user как суперпользователь. Итак, вы можете попробовать эту команду для входа в систему:

sudo -u user psql user

If user действительно является суперпользователем БД, вы можете создать для него другого суперпользователя БД и частную пустую базу данных:

CREATE USER postgres SUPERUSER;
CREATE DATABASE postgres WITH OWNER postgres;

Но поскольку ваша установка postgres.app этого не делает, вы также не должны этого делать. Простая адаптация учебника.

Я начинающий новичок.

Я установил postgres.app для mac. Я играл с командами psql, и я случайно уронил базу данных postgres. Я не знаю, что было в нем.

В настоящее время я работаю над учебником: http://www.rosslaird.com/blog/building-a-project-with-mezzanine/

И я застрял в sudo -u postgres psql postgres

СООБЩЕНИЕ ОШИБКИ: psql: FATAL: role "postgres" does not exist

$, который psql

/Applications/Postgres.app/Contents/MacOS/bin/psql

Это то, что печатает из psql -l

                                List of databases
    Name    |   Owner    | Encoding | Collate | Ctype |     Access privileges     
------------+------------+----------+---------+-------+---------------------------
 user       | user       | UTF8     | en_US   | en_US | 
 template0  | user       | UTF8     | en_US   | en_US | =c/user                  +
            |            |          |         |       | user      =CTc/user      
 template1  | user       | UTF8     | en_US   | en_US | =c/user                  +
            |            |          |         |       | user      =CTc/user      
(3 rows)

Итак, какие шаги я должен предпринять? Удалить все, что связано с psql и переустановить все?

Спасибо за помощь ребятам!

4b9b3361

Ответ 1

ПРИМЕЧАНИЕ. Если вы установили postgres с помощью homebrew, см. комментарий @user3402754 ниже.

Обратите внимание, что сообщение об ошибке НЕ говорит об отсутствующей базе данных, оно говорит об отсутствующей роли. Позже в процессе входа в систему он также может наткнуться на отсутствующую базу данных.

Но первым шагом является проверка отсутствующей роли: что выводится в psql команды du? В моей системе Ubuntu соответствующая строка выглядит следующим образом:

                              List of roles
 Role name |            Attributes             | Member of 
-----------+-----------------------------------+-----------
 postgres  | Superuser, Create role, Create DB | {}        

Если в superuser нет хотя бы одной роли, значит, у вас проблема 🙂

Если есть, вы можете использовать это для входа в систему. И, глядя на вывод вашей команды l: разрешения для user в базах данных template0 и template1 такие же, как в моей системе Ubuntu для суперпользователя postgres. Поэтому я думаю, что ваша простая установка использует user в качестве суперпользователя. Таким образом, вы можете попробовать эту команду для входа в систему:

sudo -u user psql user

Если user действительно является суперпользователем БД, вы можете создать для него другого суперпользователя БД и частную пустую базу данных:

CREATE USER postgres SUPERUSER;
CREATE DATABASE postgres WITH OWNER postgres;

Но так как ваша установка postgres.app, похоже, не делает этого, вы также не должны этого делать. Простая адаптация учебника.

Ответ 2

Ключ «Я установил postgres.app для Mac». Это приложение устанавливает локальную установку PostgreSQL с суперпользователем базы данных, чье имя роли совпадает с вашим логином (коротким).

Когда Postgres.app запускается впервые, он создает базу данных $ USER, которая является базой данных по умолчанию для psql, если ни одна из них не указана. Пользователь по умолчанию — $ USER, без пароля.

Некоторые сценарии (например, резервная копия базы данных, созданная с помощью pgdump в системе Linux) и учебные пособия предполагают, что суперпользователь имеет традиционное имя роли postgres.

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

/Applications/Postgres.app/Contents/Versions/9.*/bin/createuser -s postgres

что сделает тех ФАТАЛЬНЫМИ: роль «postgres» не существует.

Ответ 3

Для MAC:

  1. Установить Homebrew
  2. brew install postgres
  3. initdb/usr/local/var/postgres
  4. /usr/local/Cellar/postgresql/<version>/bin/createuser -s postgres или /usr/local/opt/postgres/bin/createuser -s postgres которые будут использовать только последнюю версию.
  5. запустить сервер postgres вручную: pg_ctl -D/usr/local/var/postgres start

Чтобы запустить сервер при запуске

  • mkdir -p ~/Library/LaunchAgents
  • ln -sfv/usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
  • launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

Теперь он настроен, войдите в систему с помощью psql -U postgres -h localhost или используйте PgAdmin для GUI.

По умолчанию у пользователя postgres не будет пароля для входа.

Зайдите на этот сайт, чтобы найти больше статей, подобных этой: https://medium.com/@Nithanaroy/install-postgres-on-mac-18f017c5d3f7

Ответ 4

createuser postgres --interactive

или сделать postgresl суперпользователя только с

createuser postgres -s

Ответ 5

Для меня этот код работал:

/Applications/Postgres.app/Contents/Versions/9.4/bin/createuser -s postgres

он пришел отсюда:
http://talk.growstuff.org/t/fatal-role-postgres-does-not-exist/216/4

Ответ 6

Сначала вам нужно создать пользователя:

sudo -u postgres createuser --superuser $USER

После вы создаете базу данных:

sudo -u postgres createdb $USER

Измените $USER на системное имя пользователя.

Вы можете увидеть полное решение здесь.

Ответ 7

Это происходит, когда вы запускаете initdb с пользователем, чей ID не postgres, без указания имени пользователя postgres с помощью --username=postgres или -U postgres.

Затем создается кластер базы данных с системной учетной записью пользователя, которую вы использовали для запуска initdb, и ему предоставляются разрешения суперпользователя.

Чтобы это исправить, просто создайте нового пользователя с именем postgres с опцией --superuser с помощью утилиты createuser, поставляемой с Postgres. Эта утилита находится в каталоге Postgres bin. например,

createuser --superuser postgres

Если у вас есть пользовательское имя хоста или порт, обязательно установите соответствующие параметры.

Не забудьте удалить другую учетную запись пользователя, созданную для вас initdb.

Ответ 8

Мне нужно было $PGUSER:

$ unset PGUSER
$ createuser -s postgres

Ответ 9

Запуск этого в командной строке должен исправить его

/Applications/Postgres.app/Contents/Versions/9.4/bin/createdb <Mac OSX Username Here>

Ответ 10

Отбрасывание базы данных postgres не имеет значения. Эта база данных изначально пуста, и ее целью является просто для пользователя postgres иметь своего рода «домашний» для подключения к нему, если он понадобится.

Тем не менее вы можете воссоздать его с помощью команды SQL CREATE DATABASE postgres;

Обратите внимание, что учебник, упомянутый в вопросе, не написан с учетом postgres.app.
В отличие от PostgreSQL для Unix в целом, postgres.app пытается выглядеть как обычное приложение, в отличие от службы, которая будет выполняться выделенным пользователем postgres, имеющим разные привилегии, чем ваш обычный пользователь. postgres.app запускается и управляется вашей собственной учетной записью.

Итак, вместо этой команды: sudo -u postgres psql -U postgres было бы больше в духе postgres.app просто выпустить: psql, который автоматически соединяется с базой данных, соответствующей вашему имени пользователя, и с учетной записью db одно и то же имя, которое является суперпользователем, поэтому он может делать все необходимые разрешения.

Ответ 11

Для чего это стоит, у меня установлено ubuntu и многие пакеты, и он вступил в конфликт с ним.

Для меня правильный ответ был:

sudo -i -u postgres-xc
psql

Ответ 12

Это единственное, что зафиксировало это для меня:

createuser -s -U $USER

Ответ 13

Я столкнулся с этой проблемой после сборки PostgreSQL с использованием Homebrew из-за конфликта OpenSSL.

Я предлагаю следующее:

Переустановить OpenSSL

brew remove openssl
brew install openssl

Формирование символической ссылки для OpenSSL

brew link --force openssl

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

sudo -u <administrator account> createuser <standard account> -d -P

Этот метод создаст базу данных, используя <standard account> в качестве имени, а также установит для нее пароль. Флаги в конце можно удалить, если это нежелательно.

Наконец, операции postgresql, такие как createdb <dbname>, могут использоваться без предшествующих ошибок FATAL.

Ответ 14

В системе Ubuntu я удалил PostgreSQL и переустановил его. Все базы данных восстановлены. Это решило проблему для меня.

Совет: сделайте резервную копию баз данных, чтобы быть на более безопасной стороне.

Ответ 15

Я не думаю, что здесь требуется sudo, потому что psql -l возвращает список баз данных. Это говорит мне, что initdb запускался под пользователем текущего пользователя, а не под пользователем postgres.

Вы можете просто:

psql

И продолжайте учебник.

Я бы предложил A.H общие моменты создания пользователя postgres и db, потому что многие приложения могут ожидать, что это будет существовать.

Краткое объяснение:

PostgreSQL не будет запускаться с административным доступом к операционной системе. Вместо этого он запускается с обычным пользователем, и для поддержки одноранговой аутентификации (запрашивающей ОС, которая пытается подключиться) он создает пользователя и db с пользователем, который запускает процесс инициализации. В этом случае это был ваш обычный пользователь.

Ответ 16

Я застрял в этой проблеме, выполнив brew services stop postgresql за день до этого.
На следующий день: brew services start postgresql не работает. Это происходит потому, что показано, когда вы устанавливаете с помощью homebrew. postgresql использует startd… который загружается, когда ваш компьютер включен. Разрешение

brew services start postgresql
Перезагрузите компьютер.

Ответ 17

Команда du return:

Имя роли = [email protected]_files

И эта команда postgres=# password postgres возвращает ошибку:

ОШИБКА: роли «postgres» не существует.

Но это postgres=# password [email protected]_files работает нормально.

Также после sudo -u postgres createuser -s postgres также работает первый вариант.

Вопрос:

Я настраиваю Postgresql для использования с Rails-приложением, но, похоже, я не могу подключиться к базе данных (или правильно настроить) (ошибки, которые я получаю после запуска Rails-сервера: ActiveRecord::NoDatabaseError и could not translate host name "MyProfile" to address: nodename nor servname provided, or not known).

Я собираю из множества других вопросов по этой теме, которые мне нужно переключить или создать роль “MyComputer”, однако я заметил, что все они требуют использования команды psql. Когда я запускаю даже просто psql я снова получаю ошибку FATAL: role "MyProfile" does not exist.

До сих пор я следил за процессом установки Heroku и застрял здесь (или, точнее, здесь, после установки, где Heroku говорит, что работающий psql -h localhost должен работать). Я пропустил очевидный шаг здесь/что-то не так?

Я также пробовал:

sudo su - MyProfile
вариации sudo -u postgres createuser owning_user

и еще пару команд, чтобы создать этот рулон/пользователь, но я не могу понять, что мне нужно для решения проблемы.

РЕДАКТИРОВАТЬ
Я также запускаю ps aux | grep postgres ps aux | grep postgres и похоже, что все PID, связанные с чем-либо postgres, работают под “MyProfile” (при условии, что я правильно его читаю). Но команда psql все еще возвращает, что роль не существует. #грустное лицо

EDIT 2
Я только что открыл приложение Postgres и нажал кнопку “Открыть psql”. Он открыл терминал, '/Applications/Postgres.app/Contents/Versions/9.5/bin'/psql -p5432 команду ('/Applications/Postgres.app/Contents/Versions/9.5/bin'/psql -p5432), а затем дал мне ту же ошибку (psql: FATAL: role "MyProfile" does not exist). Что, возможно, предлагает мне, что это проблема системы, а не проблема с Rails?

Редактировать 3
Это, безусловно, проблема pg, а не проблема с рельсами. Я просто удалил приложение, переустановил его с помощью SQLite (yucks), запустил локальный сервер и получил тестовую целевую страницу. Поэтому проблема связана с моей локальной машиной, но не с самим приложением. Удаленный тег RoR и все еще ищет ответы от гуру Postgres о том, почему проблема с ролью сохраняется 🙂

Лучший ответ:

Какой беспорядок… Одна вещь, о которой я забыл упомянуть, вероятно, была бы астрономически полезной для сообщества, так это то, что я перехватываю кому-то еще машину. Были затяжные настройки, которые просто решили, что они не будут играть красиво.

В конце дня я избавился от Postgress.app, установил postgres с Homebrew, и баланс того, что мне нужно, был здесь: http://exponential.io/blog/2015/02/21/install-postgresql- на Mac-OS-X-через-варку/

В частности, строка, которая меня спасла, была createdb 'whoami' (см. Фактическую запись… синтаксис немного отличается от того, что я только что написал из-за форматирования stackoverflow)… в ретроспективе это кажется очевидным, но это помогло моему текущему протоколу в пользовательском режиме прервать пресеты другого унаследованного пользователя, фактически создав базу данных, которую psql искал всю установку.

Урок выучен!

Спасибо за помощь @max, помогли мне избежать другой проблемы, которую я тоже собирался вызывать!

Ответ №1

Если вы используете Postgres.app вы должны оставить имя пользователя и пароль из config/database.yml. Также эта ошибка говорит вам, что вы ввели MyProfile не как пользователь (или роль в языке PG), а как хост для подключения к базе данных (вместо localhost).

Это действительно все, что вам нужно в config/database.yml чтобы запустить Postgres.app:

default: &default
adapter: postgresql
encoding: unicode
# For details on connection pooling, see rails configuration guide
# http://guides.rubyonrails.org/configuring.html#database-pooling
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development:
<<: *default
database: myapp_development

test:
<<: *default
database: myapp_test

Его часто хорошая идея оставить его урезанным и позволить дураку, который абсолютно должен иметь пароль на своем сервере postgres dev, использует DATABASE_URL env var.

Ответ №2

Я столкнулся с похожими проблемами при установке нового приложения Rails с Postgresql. Я получил следующие сообщения об ошибках ниже

FATAL:  role "promisepreston" does not exist
Couldn't create 'MyBlog_development' database. Please check your configuration.
rails aborted!
ActiveRecord::NoDatabaseError: FATAL:  role

Caused by:
PG::ConnectionBad: FATAL:  role "promisepreston" does not exist

Чтобы решить эту проблему, просто следуйте приведенному ниже решению

Сначала нам нужно войти в учетную запись пользователя postgres через интерфейс командной строки;

sudo su - postgres

Затем подключитесь к серверу базы данных с помощью клиента psql в качестве роли postgres:

psql -U postgres

Добро пожаловать в psql 10.6, интерактивный терминал PostgreSQL.

postgres@Preston-PC:~$ psql -U postgres
psql (10.6 (Ubuntu 10.6-0ubuntu0.18.04.1))
Type "help" for help

postgres=#

Затем, связавшись с клиентом psql, хорошо создайте роль с нашим желаемым rolename, которая имеет атрибут LOGIN и наш желаемый пароль, и которая может создавать базы данных и управлять ролями (N/B: Пожалуйста, не вводите этот postgres = #, так как он заполнитель):

postgres=# create role rolename with createdb login password 'password1';

Обратите внимание на обязательную точку с запятой (;) в конце инструкции SQL. Одинарные кавычки (‘‘) не являются частью пароля, но должны содержать его.

Это сработало? Вы можете проверить с помощью команды du (N/B: Пожалуйста, не вводите этот postgres = #, так как он является заполнителем):

postgres=# du

Теперь вы можете запустить команду для создания базы данных для вашего приложения Rails;

rails db:create

А затем также выполните команду для переноса базы данных для вашего приложения Rails;

rails db:migrate

Это все.

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

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Postal 3 ошибка при запуске приложения 0xc0000142
  • Postal 2 ошибка при запуске 0xc000007b