Я начинающий послерод.
Я установил 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 и переустановить все?
Спасибо за помощь, ребята!
macos
postgresql
terminal
user805981
источник
источник
brew services start postresql
выполнен.Ответы:
ПРИМЕЧАНИЕ. Если вы установили postgres с помощью homebrew, см. Комментарий @ user3402754 ниже.
Обратите внимание, что сообщение об ошибке НЕ говорит об отсутствующей базе данных, оно говорит об отсутствующей роли. Позже в процессе входа в систему он также может наткнуться на отсутствующую базу данных.
Но первым шагом является проверка отсутствующей роли: что выводится в
psql
команде\du
? В моей системе Ubuntu соответствующая строка выглядит так:Если нет хотя бы одной роли
superuser
, значит у вас проблема :-)Если есть, вы можете использовать это для входа в систему. И , глядя на выходе вашей
\l
команды: разрешения дляuser
наtemplate0
иtemplate1
базы данных таких же , как в моей системе Ubuntu для суперпользователяpostgres
. Так что я думаю, что ваша установка простаuser
в качестве суперпользователя. Таким образом, вы можете попробовать эту команду для входа в систему:Если
user
действительно суперпользователь БД, вы можете создать другого суперпользователя БД и частную пустую базу данных для него:Но так как ваша установка postgres.app, похоже, не делает этого, вы также не должны этого делать. Простая адаптация учебника.
источник
CREATE USER postgres WITH SUPERUSER PASSWORD 'password';
я использую postgres v10.homebrew
то вам нужно запустить/usr/local/opt/postgres/bin/createuser -s postgres
в своем терминале/usr/local/opt/postgresql/bin/createuser -s postgres
/usr/local/opt/postgresql@11/bin/createuser -s postgres
Ключ «Я установил postgres.app для Mac». Это приложение настраивает локальную установку PostgreSQL с суперпользователем базы данных, чья роль совпадает с вашим логином (коротким).
Некоторые сценарии (например, резервная копия базы данных, созданная с
pgdump
помощью системы Linux) и учебные пособия предполагают, что суперпользователь имеет традиционное имя ролиpostgres
.Вы можете сделать вашу локальную установку более традиционной и избежать этих проблем, выполнив один раз:
что заставит тех ФАТАЛОВ: роль "postgres" не исчезнет.
источник
/usr/local/Cellar/postgresql/9.2.4/bin/createuser -s postgres
(для версии 9.2.4, очевидно)./Applications/Postgres.app/Contents/Versions/9.3/bin/createuser -s postgres
бежал правильно для меня.brew link postgresql
после установки, нет необходимости добавлять весь путьcreateuser
, простоеcreateuser -s postgres
будет отлично работатьcreateuser -s postgres
работал на меня. Я установил Postgres с HomebrewДля MAC:
brew install postgres
initdb /usr/local/var/postgres
/usr/local/Cellar/postgresql/<version>/bin/createuser -s postgres
или/usr/local/opt/postgres/bin/createuser -s 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
источник
brew services start postgresql
запустить postgresили сделать суперпользователя postgresl просто с
источник
Это происходит, когда вы работаете
initdb
с пользователем, чей ID не равенpostgres
, без указания имениpostgres
пользователя с помощью--username=postgres
или-U postgres
.Затем создается кластер базы данных с системной учетной записью пользователя, которую вы использовали для запуска initdb, и ему предоставляются разрешения суперпользователя.
Чтобы это исправить, просто создайте нового пользователя с именем
postgres
с--superuser
помощьюcreateuser
утилиты, поставляемой с Postgres. Утилита находится вbin
каталоге Postgres . напримерЕсли у вас есть пользовательское имя хоста или порт, то обязательно установите соответствующие параметры .
Не забудьте удалить другую учетную запись пользователя, созданную для вас initdb.
источник
Для меня этот код работал:
это пришло отсюда: http://talk.growstuff.org/t/fatal-role-postgres-does-not-exist/216/4
источник
Мне нужно было сбросить
$PGUSER
:источник
Сначала вам нужно создать пользователя:
После создания базы данных:
Измените
$USER
свое системное имя пользователя.Вы можете увидеть полное решение здесь .
источник
Запуск этого в командной строке должен исправить это
/Applications/Postgres.app/Contents/Versions/9.4/bin/createdb <Mac OSX Username Here>
источник
Удаление
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 с тем же именем, которая оказывается суперпользователем, поэтому он может делать все что угодно с разрешениями.источник
ERROR: cannot drop the currently open database
при попытке удалить пользователя БД? Так разве не рекомендуется использовать этот postgres.app?Postgres.app
для тестирования и разработки; это пакет PostgreSQL от Heroku, разработанный для того, чтобы пользователям Mac, разрабатывающим с Ruby on Rails, было проще тестировать с PostgreSQL вместо SQLite по умолчанию. Rails использует, как правило, для тестирования с SQLite и развертывания в PostgreSQL, что вызывает всевозможные проблемы, поэтому Heroku также попытался упростить тестирование на PostgreSQL.Postgres.app
подходит для тестирования, но я бы не стал использовать его для производственных или реальных данных, но это не то, для чего он нужен.Для чего это стоит, у меня есть Ubuntu и множество установленных пакетов, и это вступило в конфликт с ним.
Для меня правильный ответ был:
источник
Это единственный, который исправил это для меня:
источник
sudo
должен получить временные привилегии суперпользователя.В системе Ubuntu я удалил PostgreSQL и переустановил его. Все базы данных восстановлены. Это решило проблему для меня.
Совет: сделайте резервную копию баз данных, чтобы быть на более безопасной стороне.
источник
Я не думаю, что здесь нужен sudo, потому что psql -l возвращает список баз данных. Это говорит мне, что initdb запускался под текущим пользователем, а не под пользователем postgres.
Вы можете просто:
И продолжить учебник.
Я бы предложил общие соображения AH по созданию пользователя postgres и db, потому что многие приложения могут ожидать его существования.
Краткое объяснение:
PostgreSQL не будет работать с административным доступом к операционной системе. Вместо этого он работает с обычным пользователем, и для поддержки одноранговой аутентификации (запрашивая ОС, которая пытается подключиться) он создает пользователя и базу данных с пользователем, который запускает процесс инициализации. В этом случае это был ваш обычный пользователь.
источник
Я застрял в этом вопросе, выполнив
brew services stop postgresql
накануне.На следующий день:
brew services start postgresql
не будет работать. Это потому, что, как показано при установке с помощью homebrew. Postgresql использует launchd ..., который загружается, когда ваш компьютер включен.разрешение:
brew services start postgresql
перезагрузите компьютер.
источник
Команда
\du
return:И эта команда
postgres=# \password postgres
возвращает ошибку:Но это
postgres=# \password postgres@implicit_files
работает нормально.Также после
sudo -u postgres createuser -s postgres
первого варианта также работают.источник