Can';t从rails连接到远程mysql服务器
当我跑步时:Can';t从rails连接到远程mysql服务器,mysql,ruby-on-rails,Mysql,Ruby On 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 c
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::错误:用户“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
相关:Rails应用程序是否在本地主机上 我想你的命令行可以翻译成
mysql -h $HOST -P $PORT -u root@your-computer -p
MySQL权限基于您连接的主机,因此如果您在远程主机上运行Rails,但在本地主机上执行命令行测试,则每次都会发出不同的请求。例如,root@localhost
应具有DROP
权限,但root@$REMOTE\u主机
不应具有此权限。我希望您的权限只允许root@your-计算机
连接,但不连接root@$HOST
如果是这种情况,请使用GRANT