J'exécute mon développement sur Ubuntu 11.10 et RubyMine
Voici mes paramètres de développement pour le database.yml: que RubyMine a créé pour moi
development:
adapter: postgresql
encoding: unicode
database: mydb_development
pool: 5
username: myuser
password:
lorsque j'essaie d'exécuter l'application, j'obtiens cette erreur ci-dessous, il semble que je n'ai pas encore créé d'utilisateur `` projet '', mais comment puis-je créer un utilisateur et lui accorder une base de données dans postgres? si tel est le problème, quel est l'outil recommandé à utiliser dans Ubuntu pour cette tâche? si ce n'est pas le problème, merci de nous conseiller.
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
etpool: 5
manquait dans ma config. Après les avoir ajoutés, l'erreur a disparu.host: localhost
il manquait. après avoir ajouté cela, tout a fonctionné. C'est dans Ubuntu 13.04C'est le moyen le plus infaillible de faire fonctionner votre application rails avec postgres dans l' environnement de développement d'Ubuntu 13.10.
1) Créez une application de rails avec postgres YAML et gemme 'pg' dans le Gemfile:
2) Donnez-lui une fonctionnalité CRUD. Si vous voyez simplement si postgres fonctionne, créez un échafaudage:
3) À partir de
rails 4.0.1
l'-d postgresql
option, génère un YAML qui n'inclut pas de paramètre d'hôte. J'ai trouvé que j'avais besoin de ça. Modifiez la section de développement et créez les paramètres suivants:Notez que le
database
paramètre est pour une base de données qui ne se ferme pas encore, et lesusername
etpassword
sont les informations d'identification d'un rôle qui n'existe pas non plus. Nous les créerons plus tard!Voici à quoi
config/database.yml
devrait ressembler (pas de honte en copypast: D):4) Démarrez le shell postgres avec cette commande:
4a) Vous pouvez obtenir cette erreur si votre utilisateur actuel (comme dans votre ordinateur) n'a pas de rôle d'administration postgres correspondant.
Maintenant, je n'ai installé postgres qu'une seule fois, donc je me trompe peut-être ici, mais je pense que postgres crée automatiquement un rôle d'administration avec les mêmes informations d'identification que l'utilisateur que vous avez installé postgres.
4b) Cela signifie donc que vous devez passer à l'utilisateur qui a installé postgres pour utiliser la commande psql et démarrer le shell:
Et puis courir
5) Vous saurez que vous êtes dans le shell postgres car votre terminal ressemblera à ceci:
6) En utilisant la syntaxe postgresql, créons l'utilisateur que nous avons spécifié dans
config/database.yml
la section développement de :Maintenant, il y a quelques subtilités ici, alors passons en revue.
Vous devriez voir ceci dans votre terminal:
Cela signifie «ROLE CREATED», mais les alertes de postgres semblent adopter les mêmes conventions impératives que git hub.
7) Maintenant, toujours dans le shell postgres, nous devons créer la base de données avec le nom que nous avons défini dans le YAML. Faites de l'utilisateur que nous avons créé à l'étape 6 son propriétaire:
Vous saurez si vous avez réussi car vous obtiendrez le résultat:
8) Quittez le shell postgres:
9) Maintenant le moment de vérité:
Si vous obtenez ceci:
Félicitations, postgres fonctionne parfaitement avec votre application.
9a) Sur ma machine locale, j'ai continué à recevoir une erreur d'autorisation. Je ne m'en souviens pas exactement, mais c'était une erreur du genre
Bien que je vous conseille de réfléchir très attentivement à la définition récursive de privilèges d'écriture sur une machine de production, localement, j'ai donné à l'ensemble de mon application des privilèges de lecture en écriture comme ceci:
9b) Montez d'un niveau de répertoire:
9c) Définissez les autorisations du répertoire my_application et de tout son contenu sur 666:
9d) Et relancez la migration:
Quelques trucs et astuces si vous vous moquez
Essayez-les avant de redémarrer toutes ces étapes:
L'utilisateur mynewusername n'a pas les privilèges CRUD sur le
my_app_development
base de données? Supprimez la base de données et créez-la à nouveau avec mynewusername en tant que propriétaire:1) Démarrez le shell postgres:
2) Supprimez la
my_app_development
base de données. Faites attention! Drop signifie supprimer complètement!3)
my_app_development
Recréez-en un autre et faites de mon nouveau nom d'utilisateur le propriétaire:4) Quittez le shell:
L'
mynewusername
utilisateur ne peut pas se connecter à la base de données? Vous pensez avoir écrit le mauvais mot de passe dans le YAML et que vous ne vous souvenez plus du mot de passe que vous avez entré à l'aide du shell postgres? Modifiez simplement le rôle avec le mot de passe YAML:1) Ouvrez votre YAML et copiez le mot de passe dans votre presse-papiers:
2) Démarrez le shell postgres:
3) Mettre à jour
mynewusername
le mot de passe de. Collez le mot de passe et n'oubliez pas de mettre des guillemets simples autour de celui-ci:4) Quittez le shell:
Vous essayez de vous connecter à localhost via un visualiseur de base de données tel que Dbeaver, et vous ne savez pas quel est le mot de passe de votre utilisateur postgres? Changez-le comme ceci:
1) Exécutez en
passwd
tant que superutilisateur:2) Entrez le mot de passe de votre compte pour
sudo
(rien à voir avec postgres):3) Créez le nouveau mot de passe du compte postgres:
Vous recevez ce message d'erreur?:
4) Vous devez donner à votre utilisateur la possibilité de créer des bases de données. Depuis le shell psql:
la source
host: localhost
? C'était le vrai problème pour moi. Autour du mot de passe, vous avez besoin de guillemets simples. Sur mon clavier c'estshift
+@
. Avec le shell psql, vous n'avez besoin que de guillemets simples autour de certains paramètres. Vous en avez besoin autour du mot de passe, et non autour du nom du rôle, par exemple. C'est très délicat pour être honnête, mais d'accord une fois que vous savez que ce sont les nuances :)Pour une solution permanente:
Le problème vient de votre pg_hba. Cette ligne:
Devrait être
Redémarrez ensuite votre serveur postgresql après avoir modifié ce fichier.
Si vous êtes sous Linux, la commande serait
la source
J'étais confronté au même problème sur la machine Ubuntu, j'ai donc supprimé cette erreur en suivant quelques étapes. Passer à l'utilisateur postgres
il demandera le mot de passe et par défaut le mot de passe est
postgres
Après avoir basculé l'utilisateur sur postgres, ouvrez la console psql
alors vérifiez la version de postgres si plusieurs versions sont disponibles
Ouvert
postgres user
9.1
est la commande supérieure du formulaire de retour de versionet remplacer
à
Redémarrez le service
J'écris aussi des étapes sur mon blog
http://tarungarg402.blogspot.in/2014/10/set-up-postgresql-on-ubuntu.html
la source
md5
authentification nécessite un mot de passe non nul pour l'utilisateur de votre base de données (je viens de le perdre aujourd'hui en essayant de maximiser la paresse lors de la création d'une application Rails).Vous pouvez aller dans votre fichier /var/lib/pgsql/data/pg_hba.conf et ajouter la confiance à la place de Ident. Cela a fonctionné pour moi.
Pour plus de détails, reportez-vous à ce problème L' authentification d'identité a échoué pour l'utilisateur
la source
/var/lib/pgsql/9.2/data/pg_hba.conf
L'ajout
host: localhost
était la magie pour moila source
Si vous obtenez ce message d'erreur (
Peer authentication failed for user (PG::Error)
) lors de l'exécution de tests unitaires, assurez-vous que la base de données de test existe.la source
J'ai également rencontré ce même problème en travaillant dans mon environnement de développement, le problème était que j'avais laissé des
host: localhost
commentaires dans leconfig/database.yml
fichier.Donc, mon application n'a pas pu se connecter à la base de données PostgreSQL, il suffit de la décommenter pour résoudre le problème.
C'est tout.
J'espère que ça aide
la source