簡體   English   中英

Postgresql 錯誤,“沒有 pg_hba.conf 條目”

[英]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上,您沒有

但是請看這里他們建議的配置

  1. 添加postgres插件
  2. 用上面鏈接中顯示的替換生產配置行

安裝插件時,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被設置為rootadmintest或其他默認用戶名。

解析度

這些錯誤表明對您的數據庫進行的登錄嘗試失敗,這意味着未建立連接。

通常會看到使用默認用戶名(例如user "postgres", database "postgres" )的失敗連接嘗試 在公共互聯網上意味着可能會有某種程度的未經授權的訪問嘗試。 這些是非常簡單的嘗試,通常涉及嘗試組合,如rootpsqltestpostgres 但是,Heroku Postgres 用戶名、密碼和數據庫名稱組合是隨機生成的,這使得這些通用訪問嘗試無效。

sql_error_code=28000另一個常見原因,特別是當它涉及“不受支持的前端協議”消息時,是使用了像nmap這樣的工具。 閱讀有關“不受支持的前端協議”消息的更多信息

Heroku 重視安全並努力工作以確保您的數據安全。 此外,信任是 salesforce.com 和 Heroku 的核心原則。 正是這種對客戶隱私的承諾和鼓舞人心的信任指導着我們每天做出的決定。 信任是每一位員工的責任,也是我們認真對待的責任。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM