Правильная конфигурация MySQL для файла Ruby on Rails Database.yml

У меня есть эта конфигурация:

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)

Есть ли что-то очевидное, что я делаю неправильно?


person GeekedOut    schedule 03.05.2011    source источник


Ответы (6)


Вы должны отделить хост от номера порта. У вас может быть что-то вроде:

development:
  adapter: mysql2
  encoding: utf8
  database: my_db_name
  username: root
  password: my_password
  host: 127.0.0.1
  port: 3306
person Amokrane Chentir    schedule 03.05.2011
comment
и хост не может быть host: localhost - person Adrian C.; 27.11.2012
comment
По соображениям безопасности обычно считается плохой практикой использовать root в качестве пользователя производственной базы данных. Чтобы настроить выделенного пользователя для вашего приложения rails, см. MySQL документы о создании пользователя. - person Feliks Montez; 30.05.2017
comment
Также из соображений безопасности (если вы используете контроль версий) вы не должны хранить свой пароль базы данных в database.yml. Вместо этого сделайте то, что сделал user3118220, и получите его из своей среды: password: ENV['MY_RAILS_APP_DB_PASSWORD']. - person Feliks Montez; 30.05.2017

Вы также можете сделать так:

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
person pangpang    schedule 08.01.2016

Используйте «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) (Reference2< /а>)

person botibs    schedule 28.03.2018

Если у вас может быть пустой файл config/database.yml, определите переменную ENV['DATABASE_URL'], тогда она будет работать

$ cat config/database.yml
 
$ echo $DATABASE_URL
mysql://root:[email protected]:3306/my_db_name

для Heroku: конфигурация heroku: set DATABASE_URL='mysql://root:[email protected]/my_db_name'

person user3118220    schedule 24.03.2015

Если у вас есть несколько баз данных для тестирования и разработки, это может помочь

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
person Rick    schedule 30.10.2014
comment
чем shost отличается от host? - person konyak; 16.10.2015

Ни один из этих ответов мне не помог, я нашел ответ Вернера Биля, который решил проблему.

Получение Не удается подключиться к локальный сервер MySQL через сокет '/var/run/mysqld/mysqld.sock' ошибка при настройке базы данных mysql для приложения Ruby on Rails

person t q    schedule 02.11.2016