[英]Postgresql error, "no pg_hba.conf entry"
我是編程的新手。 我正在構建一個 rails 應用程序,現在想將它推送到 Heroku。 我按照Heroku 的指南將我的數據庫從 sqlite 3 轉換為 postresql。 這樣做之后,當我嘗試遷移甚至在本地主機上查看我的應用程序時,我會收到此錯誤
“PG::ConnectionBad:致命:沒有主機“[local]”、用戶“keemtaker”、數據庫“tuma_database_development”、SSL 關閉的 pg_hba.conf 條目”
我查看了以前對同一問題的回答,但這對我來說是如此令人困惑和不知所措。 如果我能獲得解決此錯誤的分步指南,那就太好了。 我之前使用過 PostgreSQL,沒有任何問題。 這就是我的 gemfile 的樣子
source 'https://rubygems.org'
ruby '2.3.4'
gem 'figaro'
gem 'jbuilder', '~> 2.0'
gem 'puma'
gem 'rails', '5.1.4'
gem 'redis'
gem 'cloudinary'
gem 'carrierwave', '~> 1.2'
gem 'rails_admin', '~> 1.2'
gem 'pg'
gem 'autoprefixer-rails'
gem 'bootstrap-sass'
gem 'jquery-rails'
gem 'font-awesome-sass'
gem 'sass-rails'
gem 'simple_form'
gem 'turbolinks', '~> 5.0.0'
gem 'coffee-rails'
gem 'uglifier'
gem 'webpacker'
gem 'devise'
gem 'ransack'
gem 'trix'
gem "letter_opener", group: :development
group :development do
gem 'web-console', '>= 3.3.0'
end
group :development, :test do
# gem 'binding_of_caller'
# gem 'better_errors'
gem 'pry-byebug'
gem 'pry-rails'
gem 'listen', '~> 3.0.5'
gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'
end
在我的 database.yml 中,我有
default: &default
adapter: postgresql
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
timeout: 5000
development:
<<: *default
database: tuma_database_development
test:
<<: *default
database: tuma_database_test
production:
<<: *default
database: tuma_database_production
通過此配置,您的應用程序將查找本地數據庫,而在heroku上,您沒有
但是請看這里他們建議的配置 :
安裝插件時,heroku將在項目中添加一個DATABASE_URL環境變量。 Rails將自動查找並選擇此變量( 請參見此處 )
您需要為Heroku指定數據庫URL,因為您無權訪問其基礎架構上的本地數據庫。 將您的database.yml
production
部分替換為:
production:
url: <%= ENV["DATABASE_URL"] %>
pool: 15
因此,您完整的database.yml
如下所示:
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
timeout: 5000
development:
<<: *default
database: tuma_database_development
test:
<<: *default
database: tuma_database_test
production:
<<: *default
url: <%= ENV["DATABASE_URL"] %>
來源: Heroku上的Rails入門
根據Heroku 支持,這不是來自您的 Rails 應用程序的錯誤,而是來自試圖對您的 PostgreSQL 數據庫進行身份驗證的惡意人員:
問題
我在 Heroku Postgres 日志中看到連接嘗試失敗,但我沒有創建這些連接,它們來自我不認識的 IP 地址。 看起來有人可能試圖入侵我的數據庫:
sql_error_code = 28000 FATAL: no pg_hba.conf entry for host "122.180.247.11", user "postgres", database "postgres", SSL off
上述錯誤的變化可能包括
user
被設置為root
、admin
、test
或其他默認用戶名。解析度
這些錯誤表明對您的數據庫進行的登錄嘗試失敗,這意味着未建立連接。
通常會看到使用默認用戶名(例如
user "postgres", database "postgres"
)的失敗連接嘗試。 在公共互聯網上意味着可能會有某種程度的未經授權的訪問嘗試。 這些是非常簡單的嘗試,通常涉及嘗試組合,如root
、psql
、test
和postgres
。 但是,Heroku Postgres 用戶名、密碼和數據庫名稱組合是隨機生成的,這使得這些通用訪問嘗試無效。
sql_error_code=28000
另一個常見原因,特別是當它涉及“不受支持的前端協議”消息時,是使用了像nmap
這樣的工具。 閱讀有關“不受支持的前端協議”消息的更多信息。Heroku 重視安全並努力工作以確保您的數據安全。 此外,信任是 salesforce.com 和 Heroku 的核心原則。 正是這種對客戶隱私的承諾和鼓舞人心的信任指導着我們每天做出的決定。 信任是每一位員工的責任,也是我們認真對待的責任。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.