Я работаю над Ubuntu 11.10 и RubyMine
Вот мои настройки разработки для database.yml: который RubyMine создал для меня
development:
adapter: postgresql
encoding: unicode
database: mydb_development
pool: 5
username: myuser
password:
Когда я пытаюсь запустить приложение, я получаю эту ошибку ниже, кажется, что я еще не создал пользователя проекта, но как я могу создать пользователя и предоставить ему базу данных в postgres? если это проблема, то какой инструмент рекомендуется использовать в Ubuntu для этой задачи? если это не проблема, то, пожалуйста, совет.
Exiting
/home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:1194:in `initialize': FATAL: Peer authentication failed for user "project" (PG::Error)
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:1194:in `new'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:1194:in `connect'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:329:in `initialize'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `new'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `postgresql_connection'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:303:in `new_connection'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:313:in `checkout_new_connection'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:237:in `block (2 levels) in checkout'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:232:in `loop'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:232:in `block in checkout'
from /home/sam/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:229:in `checkout'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:95:in `connection'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:398:in `retrieve_connection'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:168:in `retrieve_connection'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:142:in `connection'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/model_schema.rb:308:in `clear_cache!'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/railtie.rb:91:in `block (2 levels) in <class:Railtie>'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/callbacks.rb:418:in `_run__757346023__prepare__404863399__callbacks'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/callbacks.rb:405:in `__run_callback'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/callbacks.rb:385:in `_run_prepare_callbacks'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/callbacks.rb:81:in `run_callbacks'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/actionpack-3.2.3/lib/action_dispatch/middleware/reloader.rb:74:in `prepare!'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/actionpack-3.2.3/lib/action_dispatch/middleware/reloader.rb:48:in `prepare!'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/application/finisher.rb:47:in `block in <module:Finisher>'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/initializable.rb:30:in `instance_exec'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/initializable.rb:30:in `run'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/initializable.rb:55:in `block in run_initializers'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/initializable.rb:54:in `each'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/initializable.rb:54:in `run_initializers'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/application.rb:136:in `initialize!'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/railtie/configurable.rb:30:in `method_missing'
from /home/sam/RubymineProjects/project/config/environment.rb:5:in `<top (required)>'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `require'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `block in require'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:236:in `load_dependency'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `require'
from /home/sam/RubymineProjects/project/config.ru:4:in `block in <main>'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/builder.rb:51:in `instance_eval'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/builder.rb:51:in `initialize'
from /home/sam/RubymineProjects/project/config.ru:1:in `new'
from /home/sam/RubymineProjects/project/config.ru:1:in `<main>'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/builder.rb:40:in `eval'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/builder.rb:40:in `parse_file'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/server.rb:200:in `app'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/commands/server.rb:46:in `app'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/server.rb:301:in `wrapped_app'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/server.rb:252:in `start'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/commands/server.rb:70:in `start'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/commands.rb:55:in `block in <top (required)>'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/commands.rb:50:in `tap'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/commands.rb:50:in `<top (required)>'
from /home/sam/RubymineProjects/project/script/rails:6:in `require'
from /home/sam/RubymineProjects/project/script/rails:6:in `<top (required)>'
from -e:1:in `load'
from -e:1:in `<main>'
Process finished with exit code 1
host: localhost
иpool: 5
отсутствовал в моем конфиге. После их добавления ошибка исчезла.host: localhost
не хватало. после того, как я добавил это, все работало. Это в Ubuntu 13.04Это самый надежный способ заставить ваше приложение rails работать с postgres в среде разработки. в Ubuntu 13.10.
1) Создайте приложение rails с помощью postgres YAML и gem 'pg' в Gemfile:
2) Дайте ему некоторую функциональность CRUD. Если вы просто видите, работает ли postgres, создайте эшафот:
3) Начиная
rails 4.0.1
с-d postgresql
опции генерирует YAML, который не включает параметр хоста. Я обнаружил, что мне это нужно. Отредактируйте раздел разработки и создайте следующие параметры:Обратите внимание, что
database
параметр предназначен для базы данных, которая еще не завершена, а такжеusername
иpassword
являются учетными данными для роли, которой еще не существует. Мы создадим их позже!Вот как
config/database.yml
должно выглядеть (не стыдно при копировании: D):4) Запустите оболочку postgres с помощью этой команды:
4a) Вы можете получить эту ошибку, если ваш текущий пользователь (как и пользователь вашего компьютера) не имеет соответствующей роли администратора postgres.
Сейчас я только один раз установил postgres, поэтому я могу ошибаться, но я думаю, что postgres автоматически создает роль администратора с теми же учетными данными, что и пользователь, с которым вы установили postgres.
4b) Таким образом, это означает, что вам нужно перейти к пользователю, который установил postgres, чтобы использовать команду psql и запустить оболочку:
А потом беги
5) Вы будете знать, что находитесь в оболочке postgres, потому что ваш терминал будет выглядеть так:
6) Используя синтаксис PostGreSQL, давайте создадим пользователя мы , указанные в
config/database.yml
«S развития раздела:Здесь есть некоторые тонкости, так что давайте рассмотрим их.
Вы должны увидеть это в своем терминале:
Это означает, что «РОЛЬ СОЗДАНА», но предупреждения postgres, похоже, принимают те же императивные соглашения git hub.
7) Теперь, все еще в оболочке postgres, нам нужно создать базу данных с именем, которое мы установили в YAML. Сделайте пользователя, которого мы создали на шаге 6, своим владельцем:
Вы узнаете, добились ли вы успеха, потому что получите результат:
8) Закройте оболочку postgres:
9) Теперь момент истины:
Если вы получите это:
Поздравляем, postgres отлично работает с вашим приложением.
9a) На моей локальной машине я получал ошибку разрешения. Я не могу вспомнить это точно, но это была ошибка в духе
Хотя я бы посоветовал очень внимательно подумать о рекурсивной настройке привилегий записи на производственном компьютере, локально я дал всем своим приложением права на чтение и запись, например, так:
9b) Поднимитесь на один уровень каталога:
9c) Установите права доступа к каталогу my_application и всему его содержимому на 666:
9d) И снова запустите миграцию:
Некоторые советы и хитрости, если вы испортили
Попробуйте это, прежде чем перезапустить все эти шаги:
Пользователь mynewusername не имеет прав на CRUD для
my_app_development
базы данных? Удалите базу данных и создайте ее снова с mynewusername в качестве владельца:1) Запустите оболочку postgres:
2) Удалить
my_app_development
базу данных. Быть осторожен! Бросить означает совершенно удалить!3) Создайте еще одну
my_app_development
и сделайте mynewusername владельцем:4) Выйти из оболочки:
mynewusername
Пользователь не может войти в базу данных? Кажется, вы написали неправильный пароль в YAML и не можете вспомнить пароль, который вы ввели с помощью оболочки postgres? Просто измените роль с помощью пароля YAML:1) Откройте свой YAML и скопируйте пароль в буфер обмена:
2) Запустите оболочку postgres:
3) Обновление
mynewusername
пароля. Вставьте пароль и не забудьте заключить его в одинарные кавычки:4) Выйти из оболочки:
Пытаетесь подключиться к localhost через средство просмотра базы данных, такое как Dbeaver, и не знаете, какой пароль у вашего пользователя postgres? Измените это так:
1) Запуск
passwd
от имени суперпользователя:2) Введите пароль своей учетной записи для
sudo
(ничего общего с postgres):3) Создайте новый пароль для учетной записи postgres:
Получаете это сообщение об ошибке ?:
4) Вы должны дать своему пользователю возможность создавать базы данных. Из оболочки psql:
источник
host: localhost
? Это было для меня настоящим хитом. Вокруг пароля вам нужны одинарные кавычки. На моей клавиатуре этоshift
+@
. С оболочкой psql вам нужны только одинарные кавычки вокруг некоторых параметров. Они нужны вам, например, вокруг пароля, а не имени роли. Честно говоря, это очень сложно, но хорошо, когда узнаешь, что это нюансы :)Для постоянного решения:
Проблема в вашем pg_hba. Эта строка:
Должно быть
Затем перезапустите ваш сервер postgresql после изменения этого файла.
Если вы работаете в Linux, команда будет
источник
Я столкнулся с той же проблемой на компьютере с Ubuntu, поэтому я удалил эту ошибку, выполнив несколько шагов. Переключиться на пользователя postgres
он запросит пароль и по умолчанию пароль
postgres
После переключения пользователя на postgres откройте консоль psql
поэтому проверьте версию postgres, если доступно несколько версий
Теперь откройте
postgres user
9.1
является версией версии из верхней командыи заменить
в
Перезапустите сервис
Я также пишу шаги в своем блоге
http://tarungarg402.blogspot.in/2014/10/set-up-postgresql-on-ubuntu.html
источник
md5
аутентификации требуется ненулевой пароль для пользователя вашей базы данных (сегодня это стало немного утомительным при попытке максимизировать лень при создании приложения Rails).Вы можете перейти к своему файлу /var/lib/pgsql/data/pg_hba.conf и добавить доверие вместо идентификатора. У меня это сработало.
Для получения дополнительной информации обратитесь к этой проблеме. Идентификационная идентификация не удалась для пользователя.
источник
/var/lib/pgsql/9.2/data/pg_hba.conf
Добавление
host: localhost
было волшебством для меняисточник
Если вы получаете это сообщение об ошибке (
Peer authentication failed for user (PG::Error)
) при запуске модульных тестов, убедитесь, что тестовая база данных существует.источник
Я также столкнулся с этой же проблемой, работая в моей среде разработки, проблема заключалась в том, что я оставил
host: localhost
комментарий вconfig/database.yml
файле.Таким образом, мое приложение не может подключиться к базе данных PostgreSQL, просто раскомментировав это, решило проблему.
Вот и все.
надеюсь, это поможет
источник