Estou executando meu desenvolvimento no Ubuntu 11.10 e RubyMine
Aqui estão minhas configurações de desenvolvimento para o database.yml: que o RubyMine criou para mim
development:
adapter: postgresql
encoding: unicode
database: mydb_development
pool: 5
username: myuser
password:
quando tento executar o aplicativo, recebo este erro abaixo, parece que ainda não criei um usuário de 'projeto', mas como posso criar um usuário e conceder a ele um banco de dados no postgres? se esse for o problema, qual é a ferramenta recomendada para usar no Ubuntu para esta tarefa? Se este não for o problema, aconselhe-o.
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
epool: 5
estava faltando na minha configuração. Depois de adicioná-los, o erro desapareceu.host: localhost
estava faltando. depois que adicionei, tudo funcionou. Isso está no Ubuntu 13.04Esta é a maneira mais infalível de fazer com que seu aplicativo Rails funcione com o postgres no ambiente de desenvolvimento no Ubuntu 13.10.
1) Crie um aplicativo rails com o postgres YAML e a gem 'pg' no Gemfile:
2) Dê a ele alguma funcionalidade CRUD. Se você está apenas vendo se o postgres funciona, crie um andaime:
3) A partir
rails 4.0.1
da-d postgresql
opção gera um YAML que não inclui um parâmetro host. Eu achei que precisava disso. Edite a seção de desenvolvimento e crie os seguintes parâmetros:Observe o
database
parâmetro for para uma base de dados que não sai ainda, e ousername
epassword
são credenciais para um papel que não existe. Nós os criaremos mais tarde!É assim que
config/database.yml
deve ser (sem vergonha no copypasting: D):4) Inicie o shell do postgres com este comando:
4a) Você pode receber esse erro se o usuário atual (como no usuário do computador) não tiver uma função correspondente do postgres de administração.
Agora eu instalei o postgres apenas uma vez, por isso posso estar errado aqui, mas acho que o postgres cria automaticamente uma função de administração com as mesmas credenciais do usuário em que você instalou o postgres.
4b) Portanto, isso significa que você precisa mudar para o usuário que instalou o postgres para usar o comando psql e iniciar o shell:
E então corra
5) Você saberá que está no shell do postgres porque seu terminal ficará assim:
6) Usando a sintaxe do PostgreSQL, vamos criar o usuário que especificado em
config/database.yml
's desenvolvimento seção:Agora, há algumas sutilezas aqui, então vamos examiná-las.
Você deve ver isso no seu terminal:
Isso significa "ROLE CREATED", mas os alertas do postgres parecem adotar as mesmas convenções imperativas do git hub.
7) Agora, ainda no shell do postgres, precisamos criar o banco de dados com o nome que definimos no YAML. Torne o usuário que criamos na etapa 6 seu proprietário:
Você saberá se teve êxito porque obterá a saída:
8) Saia do shell do postgres:
9) Agora, o momento da verdade:
Se você receber isso:
Parabéns, o postgres está funcionando perfeitamente com seu aplicativo.
9a) Na minha máquina local, recebi um erro de permissão. Não me lembro exatamente, mas foi um erro na linha de
Embora eu deva aconselhar a pensar com muito cuidado em definir recursivas vantagens de gravação em uma máquina de produção, localmente, dei a todo o meu aplicativo privilégios de gravação de leitura como este:
9b) Suba um nível de diretório:
9c) Defina as permissões do diretório my_application e todo o seu conteúdo para 666:
9d) E execute a migração novamente:
Algumas dicas e truques se você estragar tudo
Experimente estes antes de reiniciar todos estes passos:
O usuário mynewusername não tem privilégios para CRUD no
my_app_development
banco de dados? Solte o banco de dados e crie-o novamente com mynewusername como proprietário:1) Inicie o shell do postgres:
2) Solte o
my_app_development
banco de dados. Seja cuidadoso! Soltar significa excluir totalmente!3) Recrie outro
my_app_development
e faça de mynewusername o proprietário:4) Saia do shell:
o
mynewusername
usuário não pode fazer login no banco de dados? Pense que você escreveu a senha errada no YAML e não consegue se lembrar da senha digitada usando o shell do postgres? Simplesmente altere a função com a senha YAML:1) Abra sua YAML e copie a senha na sua área de transferência:
2) Inicie o shell do postgres:
3) Atualize
mynewusername
a senha. Cole a senha e lembre-se de colocar aspas simples:4) Saia do shell:
Tentando conectar-se ao host local através de um visualizador de banco de dados, como o Dbeaver, e não sabe qual é a senha do usuário do postgres? Altere assim:
1) Execute
passwd
como superusuário:2) Digite a senha da sua conta para
sudo
(nada a ver com o postgres):3) Crie o novo passwod da conta do postgres:
Recebendo esta mensagem de erro ?:
4) Você precisa dar ao usuário a capacidade de criar bancos de dados. No shell psql:
fonte
host: localhost
? Essa foi a verdadeira pegadinha para mim. Em torno da senha, você precisa de aspas simples. No meu teclado, isso éshift
+@
. Com o shell psql, você só precisa de aspas simples em torno de alguns parâmetros. Você precisa deles em torno da senha, e não em torno do nome da função, por exemplo. É muito complicados para ser honesto, mas sim uma vez você sabe que é nuances :)Para solução permanente:
O problema está no seu pg_hba. Está linha:
Deveria estar
Em seguida, reinicie o servidor postgresql após alterar este arquivo.
Se você estiver no Linux, o comando seria
fonte
Eu estava enfrentando o mesmo problema na máquina Ubuntu, então removi esse erro seguindo algumas etapas. Alterne para o usuário do postgres
ele solicitará a senha e, por padrão, a senha é
postgres
Depois de mudar o usuário para o postgres, abra o console psql
então verifique a versão do postgres se houver várias versões disponíveis
Agora Aberto
postgres user
9.1
é o comando superior do formulário de retorno de versãoe substitua
para
Reinicie o serviço
Eu escrevo etapas no meu blog também
http://tarungarg402.blogspot.in/2014/10/set-up-postgresql-on-ubuntu.html
fonte
md5
autenticação requer uma senha não nula para o usuário do seu banco de dados (apenas hoje isso é possível ao tentar maximizar a preguiça ao criar um aplicativo Rails).Você pode acessar o seu arquivo /var/lib/pgsql/data/pg_hba.conf e adicionar confiança no lugar do Ident It que funcionou para mim.
Para obter detalhes adicionais, consulte este problema. Falha na autenticação da identidade do usuário
fonte
/var/lib/pgsql/9.2/data/pg_hba.conf
Adicionando
host: localhost
foi a mágica para mimfonte
Se você receber essa mensagem de erro (
Peer authentication failed for user (PG::Error)
) ao executar testes de unidade, verifique se o banco de dados de testes existe.fonte
Também enfrentei esse mesmo problema enquanto trabalhava no meu ambiente de desenvolvimento. O problema era que deixei
host: localhost
comentários noconfig/database.yml
arquivo.Portanto, meu aplicativo não pôde se conectar ao banco de dados PostgreSQL, simplesmente descomentando o problema.
Isso é tudo.
Eu espero que isso ajude
fonte