Ruby on Rails Database.yml 파일의 MySQL 구성 수정


90

이 구성이 있습니다.

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)

내가 잘못하고 있다는 명백한 것이 있습니까?

답변:


198

호스트와 포트 번호를 구분해야합니다. 다음과 같은 것을 가질 수 있습니다.

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

3
호스트가 될 수 없다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

3

모든 유니 코드 (이모 지 포함)를 포함하는 인코딩으로 '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 )


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'


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가요?
konyak

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.