[英]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.