簡體   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