8
votes

Rake DB: Créer des échecs, problème d'authentification avec PostgreSQL 8.4

premières choses d'abord, veuillez excuser mon noobness total. J'ai vraiment essayé de trouver une solution là-bas, mais maintenant je suis coincé et complètement désemparé.

J'essaie de déployer une application Rails 3 sur un serveur distant; Lorsque vous développez sur mon VM local, aucun problème n'a montré. Mais maintenant, quand j'essaie d'exécuter p> xxx pré>

il échoue, avec une erreur (ici traduite, car je suis français): p>

login: &login
  adapter: postgresql
  username: mylogin
  password: mypassword
  host: localhost
  port: 5432
  encoding: UTF8

development:
  <<: *login
  database: somesite_development

test:
  <<: *login
  database: somesite_test

production:
  <<: *login
  database: somesite_production


0 commentaires

6 Réponses :


0
votes

Voici quelques instructions concises qui devraient fonctionner pour vous

http://www.ycyberciti.biz / FAQ / PSQL-PSQL-IDEN-IDEN-Authentification-Échec de l'utilisateur / .

Fondamentalement, vous devez définir la méthode d'authentification pour localhost sur "Trust".


1 commentaires

Merci pour la réponse, mais comme je l'ai dit: "J'ai essayé beaucoup de choses avec pg_hba.conf, aucun n'a fonctionné - quelle que soit la méthode utilisée (identité, mot de passe, MD5)" De plus, je ne crois pas que mon serveur admin serait heureux Si je permettez à cet utilisateur de se connecter par la méthode de confiance ... mais hé, merci pour l'indice, je vais essayer et si je ne peux toujours pas me connecter, cela signifie que quelque chose ne va pas ailleurs.



0
votes

Vous devez donner "Myuser" dans PostgreSQL Le privilège "peut créer des objets de base de données".

dans pgadmin, on dirait que ceci:

Entrez la description de l'image ici

Après avoir appelé Rake DB: Créez, vous pouvez enlever ce privilège.


1 commentaires

Merci, mais comme indiqué à la fin de ma question (modifier), mon problème était dû à une pure mutation. Je pourrais ajouter que plus tard, j'ai déclenché un autre bug: avec Ruby> 1.9.2, il semble que l'analyseur YAML par défaut est actuellement brisé et ne prend pas en charge les touches de fusion ("<<:").



3
votes

D'accord, découvrez à quel point j'ai été incroyablement stupide ... Le mot de passe de mon utilisateur n'était tout simplement pas défini! Je pense que j'ai oublié le point-virgule après xxx

... J'ai vu cela en demandant "Select * de pg_shadow;" - Le champ de mot de passe était vide. Trois jours de ma vie gaspillée à cause de cette erreur muette ...


1 commentaires

Assurez-vous que vous Strigifiez le mot de passe ... vous feriez donc alter utilisateur xxxx avec mot de passe 'xxxx';



20
votes

J'ai également été coincé sur ce problème pendant une période très longue et je suis allé à une variété de liens (y compris ceux proposés dans ce poste) pour essayer de trouver la réponse, mais en vain. Cependant, la solution est très simple. Alors que de nombreuses autres réponses étaient sur la bonne voie, voici les étapes exactes pour résoudre le problème:

  1. Ouvrez votre fichier pg_hba.conf dans un éditeur de texte de votre choix. (Il est situé dans / etc / postgresql // principal)

  2. naviguer sur la ligne qui se lit comme suit:

    # "local" est destiné aux connexions de socket de domaine UNIX uniquement

    et coller en dessous de celui-ci: xxx

    Cela fera confiance à tous les utilisateurs UNIX essayant de se connecter au serveur PSQL sur la machine locale. (Lire la documentation en haut de la page pour plus d'informations sur la fonction des colonnes)

    1. Enregistrez le fichier pg_hba.conf et quittez l'éditeur de texte.

    2. redémarrez le serveur PostgreSQL en exécutant la commande:

      Service PostgreSQL Redémarrez

    3. Essayez maintenant de démarrer un serveur PSQL en exécutant:

      PSQL -D -U -U (ou "PSQL" pour court)

    4. Vous devez être capable de vous connecter sans problème.

      * Remarque: Tout cela suppose que vous avez un nom d'utilisateur PSQL valide pour la connexion. Si vous ne suivez pas les liens ci-dessous pour définir un UP:

      Configuration d'un utilisateur: http://erikonrails.snowedin.net/?p=274

      Assurez-vous de vous assurer que vous avez Un utilisateur de Postgres valide: http://archives.postgresql.org/pgsql-novice/2002-08/msg00072.php < / a>

      lister tous les utilisateurs de PSQL existants: Si vous recherchez une commande "Utilisateurs de liste" ou "Afficher les utilisateurs", essayez:

      "Sélectionnez * de pg_user;" (Lorsque connecté à PSQL)

      bonne chance!


2 commentaires

Merci, mais cette question a déjà une réponse acceptée ... (le problème était que je suis que je suis stupide>. <) De plus, je ne pense pas que le "Hey, supprimons toute sécurité et que tous les utilisateurs locaux de" solution soient Une bonne idée, surtout lorsque vous partagez un serveur avec de nombreux autres utilisateurs de différentes entreprises.


@m_x a raison. C'est un peu comme la chasse aux oiseaux avec un bazooka. Bien sûr, vous réparez le problème, mais cela vous ouvre d'autres préoccupations.




0
votes

Dans mon cas, j'ai constaté qu'une ligne ultérieure de la ligne de règle des autorisations dans le fichier pg_hba.conf avait sur-pilon le plus ancien local ligne. Je configurais correctement la ligne locale Authentification MD5, mais la ligne hôte a été définie sur Ident que j'ai changé en MD5

Comme les autres ont souligné ici, notez que l'utilisation de fiduciaire est une méthode non sécurisée, vous ne devez donc pas l'utiliser dans un déploiement de style de production.


0 commentaires