Ruby on Rails Database.ymlファイルの正しいMySQL設定


88

私はこの構成を持っています:

development:
  adapter: mysql2
  encoding: utf8
  database: my_db_name
  username: root
  password: my_password
  host: mysql://127.0.0.1:3306

そして私はこのエラーを得ています:

Unknown MySQL server host 'mysql://127.0.0.1:3306' (1)

私が間違っていることは明らかですか?

回答:


196

ホストをポート番号から分離する必要があります。あなたは次のようなものを持つことができます:

development:
  adapter: mysql2
  encoding: utf8
  database: my_db_name
  username: root
  password: my_password
  host: 127.0.0.1
  port: 3306

2
ホストはできませんhost: localhost
エイドリアンC.

セキュリティ上の理由から、root運用データベースユーザーとして使用することは、一般的に悪い習慣と見なされています。Railsアプリ専用のユーザーを設定するには、ユーザーの作成に関するMySQLドキュメントを参照してください。
Feliks Montez

1
また、セキュリティ上の理由から(バージョン管理を使用している場合)、データベースのパスワードをに保存しないでくださいdatabase.yml。代わりに、user3118220が行ったことを実行して、環境から取得しますpassword: ENV['MY_RAILS_APP_DB_PASSWORD']
Feliks Montez

17

次のようにすることもできます:

default: &default
  adapter: mysql2
  encoding: utf8
  username: root
  password:
  host: 127.0.0.1
  port: 3306

development:
  <<: *default
  database: development_db_name

test:
  <<: *default
  database: test_db_name

production:
  <<: *default
  database: production_db_name

2

空のconfig / database.ymlファイルを使用できる場合は、ENV ['DATABASE_URL']変数を定義すると、機能します

$ cat config/database.yml
 
$ echo $DATABASE_URL
mysql://root:my_password@127.0.0.1:3306/my_db_name

Herokuの場合:heroku config:set DATABASE_URL='mysql://root:my_password@host.com/my_db_name'


2

エンコーディングとして 'utf8mb4'を使用して、すべてのユニコード(絵文字を含む)をカバーします

default: &default
  adapter: mysql2
  encoding: utf8mb4
  collation: utf8mb4_bin
  username: <%= ENV.fetch("MYSQL_USERNAME") %>
  password: <%= ENV.fetch("MYSQL_PASSWORD") %>
  host:     <%= ENV.fetch("MYSQL_HOST") %>

リファレンス1)(リファレンス2


0

テストと開発のための複数のデータベースがある場合、これは役立つかもしれません

development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: DBNAME
  pool: 5
  username: usr
  password: paswd
  shost: localhost
test:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: DBNAME
  pool: 5
  username: usr
  password: paswd
  shost: localhost
production:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: DBNAME
  pool: 5
  username: usr
  password: paswd
  shost: localhost

1
どうshost違うのhost
コンヤック、2015年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.