如何修复mysql访问被拒绝?适用于家庭服务器,但不适用于生产服务器

问题描述 投票:0回答:1

在运行rails 5.2.2和ruby 2.6.1的家庭服务器上,一切正常;但是在我的linode上,我拒绝用户'deploy'@'localhost'的访问权限(使用密码:YES)在家庭服务器上的database.yml中,我使用david作为用户,这是unix帐户。在linode上使用相同的database.yml,我已在database.yml文件中以用户身份进行部署。 deploy是linode服务器的unix帐户。

我已经尝试了root帐户并将所有权限授予root和deploy,但都不起作用

... mysql> show grants; + ------------------------------------------------- ---------- + |部署@ localhost的授权+ ------------------------------------------------- ---------- + |授予所有特权。要'部署'@'localhost'| |在mysql上授予所有特权。*'部署'@'localhost'| + ------------------------------------------------- ---------- + 2行(0.00秒)......

home.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

...

linode服务器上的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

...

mysql ruby-on-rails-5
1个回答
0
投票

等等,你有两个不同的database.yml文件?

据我所知,你有一个david@localhost,另一个有deploy@localhost

我没有理由这样做。

database.yml文件的全部目的是定义localhost,staging,testing等的登录和生产。在生产中,您通常使用.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
© www.soinside.com 2019 - 2024. All rights reserved.