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

In this guide, we will discuss the error message «role postgres does not exist» that you may encounter while working with PostgreSQL. We will provide a step-by-step solution to resolve this issue and help you understand the cause of the error. In addition, we will provide an FAQ section to answer some common questions related to this error.

Table of Contents

  • Understanding the ‘Role Postgres Does Not Exist’ Error
  • Step-By-Step Solution
  • FAQs
  • Related Links

Understanding the ‘Role Postgres Does Not Exist’ Error

The «role postgres does not exist» error occurs when you try to access a PostgreSQL database using the default postgres user, but the user does not exist in the PostgreSQL database. This error is common when you have recently installed PostgreSQL and have not yet created the postgres user.

Step-By-Step Solution

Follow these steps to resolve the «role postgres does not exist» error:

Step 1: Access PostgreSQL as the Superuser

To create the postgres user, you need to access your PostgreSQL database as the superuser. The superuser is usually the user who installed PostgreSQL or has superuser privileges.

Open your terminal and enter the following command:

sudo -u [superuser] psql

Replace [superuser] with the username of the superuser on your system.

Step 2: Create the ‘postgres’ User

Once you are connected to the PostgreSQL database as the superuser, execute the following command to create the postgres user:

CREATE ROLE postgres WITH LOGIN CREATEDB PASSWORD 'your_password';

Replace your_password with a strong password of your choice.

Step 3: Grant Superuser Privileges to the ‘postgres’ User

To grant superuser privileges to the postgres user, execute the following command:

ALTER ROLE postgres WITH SUPERUSER;

Step 4: Exit PostgreSQL

Exit the PostgreSQL command prompt by typing the following command:

q

Step 5: Verify the ‘postgres’ User

To verify if the postgres user has been created and can access the PostgreSQL database, execute the following command:

psql -U postgres -W

Enter the password you set for the postgres user when prompted. You should now be able to access the PostgreSQL database without encountering the «role postgres does not exist» error.

FAQs

1. Can I use a different username instead of ‘postgres’?

Yes, you can use any username you prefer. Just replace postgres with your desired username in the CREATE ROLE and ALTER ROLE commands.

2. What should I do if I forget the ‘postgres’ user password?

If you forget the postgres user password, you can reset it by accessing the PostgreSQL database as the superuser and executing the following command:

ALTER ROLE postgres WITH PASSWORD 'new_password';

Replace new_password with a new strong password of your choice.

3. Can I revoke superuser privileges from the ‘postgres’ user?

Yes, you can revoke superuser privileges from the postgres user by executing the following command as the superuser:

ALTER ROLE postgres WITH NOSUPERUSER;

4. How can I delete the ‘postgres’ user?

To delete the postgres user, execute the following command as the superuser:

DROP ROLE postgres;

5. How can I list all users in my PostgreSQL database?

To list all users in your PostgreSQL database, execute the following command:

SELECT usename FROM pg_user;
  • Official PostgreSQL Documentation
  • How to Install and Use PostgreSQL on Ubuntu
  • Managing PostgreSQL Users and Roles

Используйте пользователя postgres операционной системы для создания вашей базы данных — если вы не настроили роль базы данных с необходимыми привилегиями, соответствующими пользователю вашей операционной системы с таким же именем (h9uest в вашем случае):

sudo -u postgres -i

Как рекомендуется здесь или здесь.

Тогда попробуйте еще раз. Напечатайте exit когда закончите с работой как системный пользователь postgres.

Или выполните одну команду createuser как postgres с sudo, как продемонстрировано drees в другом ответе.

Смысл заключается в том, чтобы использовать пользователя операционной системы, совпадающего с ролью базы данных с тем же именем, для предоставления доступа через ident аутентификацию. postgres — это пользователь операционной системы по умолчанию, который инициализировал кластер базы данных. Руководство:

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

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

Читайте о ролях базы данных и аутентификации клиента в руководстве.

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

Я установил 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 9.1. Я ничего не могу сделать с PostgreSQL: не могу , не могу ; все операции возвращают сообщение об ошибке


— это имя моей учетной записи, а я PostgreSQL 9.1 под этой учетной записью. Аналогичная ошибка сохраняется для учетной записи .

  • 1 После этого вы можете столкнуться с , проверьте dba.stackexchange.com/questions/57723/….
  • 20 Я ответил на этот вопрос здесь. Прочтите также этот учебник «Как установить Postgres для Ubuntu Linux».
  • @Ruzenhack, эта ссылка на руководство была именно тем, что мне нужно! Очень понятно и просто
  • 5 psql -h локальный хост -U postgres
  • Если вы получаете ошибку И ошибку , проверьте этот ответ: stackoverflow.com/a/56658832/1689770

Использовать пользователь операционной системы для создания базы данных — если вы не настроили база данных роль с необходимыми привилегиями, которая соответствует пользователю вашей операционной системы с таким же именем ( в вашем случае):


Как рекомендовано здесь или здесь.

Затем попробуйте еще раз. Введите , когда закончите работу в качестве системного пользователя .

Или выполните единственную команду как с , как показано drees в другом ответе.

Дело в том, чтобы использовать пользователя операционной системы, соответствующего одноименной роли базы данных, для предоставления доступа через аутентификация. — пользователь операционной системы по умолчанию, инициализировавший кластер базы данных. Руководство:

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

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

Прочтите в руководстве о ролях базы данных и аутентификации клиентов.

  • 1 Невозможно запустить от имени пользователя postgres … Как установить программу? См. Эту проблему с установкой S2geometry.
  • 1 В зависимости от конфигурации может потребоваться .
  • 3 не работает, а работает! Что делает флаг ?
  • 2 @parsecer: запускается интерактивная оболочка, аналогичная , но основанная на привилегиях sudo. См. .

После того, как я попробовал много решений других людей, но безуспешно, этот ответ наконец помог мне.

https://stackoverflow.com/a/16974197/2433309

Короче говоря, бег


создает роль с именем owning_user (в данном случае h9uest). После этого вы можете запустить из терминала под любым именем учетной записи, которое вы настроили, без необходимости входить в среду Postgres.

  • 30 Если после этого вы получите сообщение об ошибке «недостаточно прав», вы можете добавить флаг -s к указанной выше команде. Это создаст вашего нового пользователя как суперпользователя. Помните о последствиях этого для безопасности, если вы решите это сделать.
  • 1 Я получаю «недостаточно прав», но теперь получаю ОШИБКУ: roll «username» уже существует.
  • 5 @ConnorLeech Вы можете заменить postgres именем вашего суперпользователя PG. В моем случае это было мое имя.
  • 1 Мне также пришлось использовать , и мне не нужно было использовать (просто работало нормально)
  • 2 хорошо, так тогда почему

создание роли на pgsql с привилегиями «суперпользователя»


Затем создайте пользователя


Назначьте привилегию пользователю


Затем включите вход для этого пользователя, чтобы вы могли запустить, например: , с обычного терминала :


  • 4 Я только что выполнил новую установку PostgreSQL 9.4.4 и смог использовать следующее для создания нового суперпользователя: , который объединяет все три шага …
  • 27 # GRANT ROOT мне; ОШИБКА: роль «корень» не существует
  • 6 более простая версия:
  • 2 @shacker
  • Я использую root для запуска сервера, затем «psql -U postgres -h 127.0.0.1 —command« СОЗДАТЬ ПОЛЬЗОВАТЕЛЬСКИЙ postgresondocker С ПАРОЛЕМ SUPERUSER ‘postgresondocker’; » && createdb -O postgresondocker postgresondocker« могу ли я использовать для этого root, если я добавлю его в pg_ident?

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

Чтобы создать роль суперпользователя и базу данных для вашей личной учетной записи:

  • 1 Мне нужно было запустить вторую часть как:
  • 2 @SanD Если вы создали свою учетную запись в качестве суперпользователя (с помощью флага в первой команде), вы можете создать базу данных как вы. Вам не нужно запускать как .
  • 2 Отличный ответ! Сэкономил мне часы отладки !!

Это работает для меня:


  • пожалуйста, добавьте пароль для указанного выше пользователя.
  • 1 @Vincent, если пароль никогда не менялся после установки PostgreSQL, по умолчанию это (проверено в Linux и Windows).
  • 1

  • 4 результаты:
  • 2 ? Зависит от вашего пользователя (-U).
  • благодарю вас! Я изо всех сил пытался сделать резервную копию postgresql с root, так как я не знаю пароль postgres
  • Я получаю сообщение об ошибке «Чтобы создать суперпользователя, должен быть суперпользователь»

Метод работы,

  1. здесь меняй сверстник к доверять
  2. перезапуск,

  3. теперь попробуйте,

  • 2 Должно быть очевидно, что метод рекомендуется только в полностью защищенной среде. Хотя доступ с ненадежных подключений возможен, никогда выставьте свой кластер БД таким образом.
  • Проверить: Если служба postgresql не запущена, возможно, в файле есть ошибка.

Для версии Postgres 9.5 используйте следующую команду:


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

В приглашении локального пользователя, а не в приглашении пользователя root, введите

sudo -u postgres createuser  

Затем введите пароль для локального пользователя.

Затем введите предыдущую команду, которая сгенерировала «роль« имя пользователя »не существует».

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

Я установил его на macOS, и мне пришлось:


Вот источник: https://github.com/PostgresApp/PostgresApp/issues/313#issuecomment-192461641

За Windows пользователи:

Затем вы должны увидеть интерфейс командной строки для PostgreSQL:

В моем случае это решило создание кластера БД вручную.

По какой-то причине, когда я установил postgres, «исходная БД» не была создана. Выполнение помогло мне.

Это решение представлено в PostgreSQL Wiki — Первые шаги:

initdb

Обычно установка postgres в вашу ОС создает «начальную базу данных» и запускает демон сервера postgres. Если нет, то вам нужно запустить initdb

дамп и восстановление с флагами

например

дамп —

восстановить —

Следуйте этим шагам, и это сработает для вас:

  1. бег
  2. введите db_console
  3. некоторая информация будет показана вам, выбрав информацию, которая скажет вам сделать: извините, я не помню, но это похоже на этот, затем замените пользователя и пароль, хост и базу данных с информацией, включенной в в размещение:
  4. ты увидишь. восстановление кеша модели в фоновом режиме.
  5. Введите apt-get update && apt-get upgrade после обновления, перезапустите терминал и запустите msfconsole, и он работает, вы можете проверить это, набрав , и вы увидите, что он подключен.

У меня сработало что-то простое, например, изменение порта с 5432 на 5433.

причины проблемы

Postgresql не может использовать пользователя root для запуска службы, поэтому вы должны переключиться на другого пользователя, чтобы запустить обычную службу, но иногда нам нужно использовать пользователя root для использования postgresql

Решение

метод первый

Не используйте postgresql как пользователь root без необходимости

Метод второй

Вручную создайте корневую роль, здесь я использую имя пользователя postgres для запуска службы postgresql

su postgres
# Создать пользователя root
postgres=#create user root with password 'password';    
CREATE ROLE

 # Предоставить права доступа к базе данных пользователю root
postgres=# GRANT ALL PRIVILEGES ON DATABASE mydatabase to root;
GRANT

 # Измените пользователя на суперпользователя (см. Фактические потребности)
postgres=# ALTER ROLE root WITH SUPERUSER;

postgres=# q

Вы также можете напрямую создать root как суперпользователь, вход в систему означает разрешение входа в систему

CREATE ROLE root superuser PASSWORD 'password' login;

Понравилась статья? Поделить с друзьями:
  • Postgresql ошибка лишние данные после содержимого последнего столбца
  • Postgresql ошибка column does not exist
  • Postgresql не удалось запустить службу код ошибки 1063
  • Postgres ошибка создания временной директории
  • Postgres ошибка синтаксиса примерное положение if