J'ai passé la moitié de ma journée à essayer de résoudre ce problème. J'ai lu beaucoup de sujets sur le débordement de pile et d'autres ressources, mais je n'ai trouvé aucune réponse utile.
Tout d'abord, j'ai créé mon application avec l'indicateur PostgreSQL, et concernant ce tutoriel , était essayer de configurer mon environnement:
Voici ma base de données.yml
# Database administrative login by Unix domain socket local all postgres md5 # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5 # Allow replication connections from localhost, by a user with the # replication privilege.
Mais après la commande rake db: create
Je reçois:
FATAL: password authentication failed for user "viter" FATAL: password authentication failed for user "viter" Couldn't create 'my_app_development' database. Please check your configuration. rake aborted! PG::ConnectionBad: FATAL: password authentication failed for user "viter" FATAL: password authentication failed for user "viter"
J'ai également essayé d'utiliser ce sujet mais recevez cette erreur après avoir exécuté la commande 'psql':
psql: FATAL: la base de données" viter "n'existe pas
p>
Voici également mon fichier pg_hba.conf:
default: &default adapter: postgresql encoding: unicode # For details on connection pooling, see Rails configuration guide # http://guides.rubyonrails.org/configuring.html#database-pooling pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> host: localhost username: viter password: ****** development: <<: *default database: my_app_development # The specified database role being used to connect to postgres. # To create additional roles in postgres see `$ createuser --help`. # When left blank, postgres will use the default role. This is # the same name as the operating system user that initialized the database. #username: my_app # The password associated with the postgres role (username). #password: # Connect on a TCP socket. Omitted by default since the client uses a # domain socket that doesn't need configuration. Windows does not have # domain sockets, so uncomment these lines. #host: localhost # The TCP port the server listens on. Defaults to 5432. # If your server runs on a different port number, change accordingly. #port: 5432 # Schema search path. The server defaults to $user,public #schema_search_path: myapp,sharedapp,public # Minimum log levels, in increasing order: # debug5, debug4, debug3, debug2, debug1, # log, notice, warning, error, fatal, and panic # Defaults to warning. #min_messages: notice # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". # Do not set this db to the same as development or production. test: <<: *default database: my_app_test # As with config/secrets.yml, you never want to store sensitive information, # like your database password, in your source code. If your source code is # ever seen by anyone, they now have access to your database. # # Instead, provide the password as a unix environment variable when you boot # the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database # for a full rundown on how to provide these environment variables in a # production deployment. # # On Heroku and other platform providers, you may have a full connection URL # available as an environment variable. For example: # # DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase" # # You can use this database configuration with: # # production: # url: <%= ENV['DATABASE_URL'] %> # production:
3 Réponses :
Assurez-vous que vous créez l'utilisateur viter
et la base de données my_app_development
avec les autorisations appropriées.
D'après votre message d'erreur, il semble que vous ayez essayé quelque chose avec la base de données viter
, dont vous n'avez pas besoin.
Le problème auquel vous êtes confronté est que vous n'avez pas créé d'utilisateur pour la base de données de votre application.
Tout d'abord, vous voudrez créer votre utilisateur "viter" via postgres; sudo -u postgres createuser viter -s
Cela fait également de "viter" un super-utilisateur.
Ensuite, vous devez définir le mot de passe pour "viter" pour qu'il corresponde à ce qui est utilisé dans "database.yml" en utilisant cette commande dans psql (en tant qu'utilisateur postgres): \ yourpassword viter
Ensuite, créez chaque base de données avec "viter" comme propriétaire (tout en restant dans le terminal psql
).
Créez votre base de données de développement avec ceci: CREATE DATABASE my_app_development OWNER viter;
Répétez cette opération pour les bases de données production
et test
en fonction du nom de chaque base de données.
Par exemple; my_app_production
et my_app_test
.
Bonjour Jake, après cette commande 'sudo -u postgres createuser viter -s' j'ai reçu le mot de passe '[sudo] pour viter:' J'ai tapé le mot de passe (le même que dans mon fichier database.yml) poussé sur le bouton "Entrée", et il a demandé une seconde time 'Password:', j'ai tapé le deuxième mot de passe et j'ai reçu: 'createuser: impossible de se connecter à la base de données postgres: FATAL: l'authentification par mot de passe a échoué pour l'utilisateur "postgres"
Dans votre config / database.yml pour obtenir Postgres.app en cours de réécriture:
default: &default adapter: postgresql encoding: unicode # For details on connection pooling, see rails configuration guide # http://guides.rubyonrails.org/configuring.html#database-pooling pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> development: <<: *default database: myapp_development test: <<: *default database: myapp_test
Cela résout mon problème