mysql - 如何修复mysql访问被拒绝?适用于家庭服务器但不适用于生产服务器
问题描述
在我的运行 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 和部署,但都不起作用
... mysql> 显示授权;+-------------------------------------------------- ----------+ | deploy@localhost 的赠款 | +-------------------------------------------------- ----------+ | 授予所有特权。TO '部署'@'localhost' | | 授予 .* 上的所有权限mysql
到 '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
...
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
...
解决方案
等等,你有两个不同的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
推荐阅读
- java - 错误:org.json.JSONArray 类型无法转换为 JSONObject
- c++ - 如何编写一个通用函子,它在没有任何条件的情况下也可以在有条件的情况下工作(无论是真还是假)?
- python - 在具有分布式访问权限的远程计算机上对 Python 脚本进行基准测试
- java - com.sun.mail.util.MailConnectException:无法连接到主机,端口:smtp.gmail.com,587;超时 -1
- android - Firestore:在 OnDestroyView 或 OnStop 或 OnPause 中分离快照侦听器?
- java - Controller 类中的全局变量被打开的最新会话覆盖
- java - 程序类型已经存在:com.bumptech.glide.MemoryCategory
- dart - 将 .dart.snapshot 反编译成 Dart 源代码
- jquery - 使用 Jquery 在悬停时播放音频
- angular - 嵌套反应形式