Как исправить отказ MySQL доступа?работает на домашнем сервере, но не на рабочем сервере - PullRequest
0 голосов
/ 05 апреля 2019

На моем домашнем сервере работает rails 5.2.2 и ruby ​​2.6.1, все работает отлично;но на моем линоде я получаю доступ, запрещенный для пользователя 'deploy' @ 'localhost' (используя пароль: YES) В файле database.yml на домашнем сервере я использую david в качестве пользователя, который является учетной записью unix.Используя тот же файл database.yml на линоде, я развернул его как пользователь в файле database.yml.deploy - это учетная запись unix для сервера linode.

Я пробовал учетную запись root и предоставил все права root и deploy, но ни одна из них не работает

... mysql> show grants;+ ----------------------------------------------------------- + |Гранты для размещения @ localhost |+ ----------------------------------------------------------- + |ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА . ДЛЯ 'развертывания' @ 'localhost' ||ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА mysql. * TO 'deploy' @ 'localhost' |+ ----------------------------------------------------------- + 2 строки в наборе (0,00 с) ... ...

database.yml на домашнем сервере

  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: mysql_development
  pool: 5
  username: david
  password: "password"
  host: localhost
  port: 3306


test:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: mysql_test
  pool: 5
  username: david
  password: "password"
  host: localhost
  port: 3306

production:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: mysql_production
  pool: 5
  host: localhost
  port: 3306

...

database.yml на линод-сервере

development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: mysql_development
  pool: 5
  username: deploy
  password: "password"
  host: localhost
  port: 3306


test:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: mysql_test
  pool: 5
  username: deploy
  password: "password"
  host: localhost
  port: 3306

production:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: mysql_production
  pool: 5
  host: localhost
  port: 3306

...

1 Ответ

0 голосов
/ 10 апреля 2019

Подождите, у вас есть два разных database.yml файла?

Насколько я вижу, у вас есть david@localhost в одном и deploy@localhost в другом.

Я не вижу причин для этого.

Цель файла database.yml - определить имена входа для локального хоста, подготовки, тестирования и т. Д. И производства. На производстве вы обычно настраиваете его, используя файл .env, или используя зашифрованные учетные данные в Rails 5.2.

Таким образом, вы можете хранить свои учетные данные сервера Linode в безопасном месте, не жертвуя функциональностью.

Вот пример нашего собственного database.yml файла:

default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  reconnect: true
  host: <%= ENV.fetch('DB_HOST') {'127.0.0.1'} %>
  port: <%= ENV.fetch('DB_PORT') {'3306'} %>
  database: <%= ENV.fetch('DB_NAME') {'our_dev_server'} %>
  username: <%= ENV.fetch('DB_USER') {'root'} %>
  password: <%= ENV.fetch('DB_PASSWORD') { '' } %>
  variables:
    sql_mode: TRADITIONAL # Read more: https://github.com/rails/rails/issues/25924

development:
  <<: *default

test:
  <<: *default
  database: our_test_server

production:
  <<: *default
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...