Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t从rails连接到远程mysql服务器_Mysql_Ruby On Rails - Fatal编程技术网

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