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