繁体   English   中英

无法从Rails连接到远程MySQL服务器

[英]Can't connect to remote mysql server from rails

当我跑步时:

bundle exec rails c

我懂了

Mysql2::Error: Access denied for user 'root'@'$HOST' (using password: YES)

尽管这很好用:

mysql -h $HOST -P $PORT -u root -p

这是我的config / database.yml

development:
  &defaults
  adapter: mysql2
  encoding: utf8mb4
  collation: utf8mb4_unicode_ci
  pool: 5
  host: $HOST
  port: $PORT
  database: $DATABASE
  username: root
  password: $PASSWORD
  reconnect: true

我究竟做错了什么?

您不能像这样在config/database.yml使用bash变量。 Rails将$HOST视为字符串"$HOST" ,这就是您在此处看到的情况

Mysql2 :: Error:用户'root'@'$ HOST'的访问被拒绝(使用密码:是)

相反,您可以使用ENV

development:
  &defaults
  adapter: mysql2
  encoding: utf8mb4
  collation: utf8mb4_unicode_ci
  pool: 5
  host: ENV['HOST']
  port: ENV['PORT']
  database: ENV['DATABASE']
  username: root
  password: ENV['PASSWORD']
  reconnect: true

相关: http : //railsapps.github.io/rails-environment-variables.html

Rails应用程序在本地主机上吗?

我认为您的命令行翻译成

mysql -h $HOST -P $PORT -u root@your-computer -p

MySQL权限基于您连接的主机,因此,如果您在远程主机上运行Rails,但是在localhost上进行命令行测试,则每次都会发出不同的请求。 例如, root@localhost应该具有DROP特权,但root@$REMOTE_HOST不应该具有DROP特权。 我希望您的权限仅允许root@your-computer进行连接,而不允许root@$HOST

在这种情况下,请更改特权以使用GRANT添加对root @ $ HOST的访问权限

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM