簡體   English   中英

將 Rails 模式轉儲為 SQL 時,用戶“root”的密碼身份驗證失敗

[英]password authentication failed for user "root" when dumping Rails schema as SQL

我使用 Rails 5.2.3 和 PostGIS 2.5 在 Postgres 11 上運行,在 Docker Compose 環境中設置。 我在config/application.rb設置了以下內容:

config.active_record.schema_format = :sql

這樣就可以丟棄 Schema 中的特殊功能。 但是,在db:migrate期間這樣做,我收到以下錯誤:

pg_dump: [archiver (db)] 與數據庫“development”的連接失敗:致命:用戶“root”的密碼驗證失敗

執行的命令是:

pg_dump -s -x -O -f /var/www/dev/db/structure.sql -T geography_columns -T geometry_columns -T layer -T raster_columns -T raster_overviews -T spatial_ref_sys -T topology development

報錯的原因是這里沒有root用戶; 事實上,我在我的數據庫配置中使用了不同的用戶名:

default: &default
  adapter: postgis
  encoding: unicode
  host: <%= ENV['DATABASE_HOST'] %>
  user: <%= ENV['DATABASE_USER'] %>
  password: <%= ENV['DATABASE_PASSWORD'] %>
  # For details on connection pooling, see Rails configuration guide
  # http://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("DATABASE_POOL") { 10 } %>

用戶不是root ,Rails 應用程序本身一切正常,它可以使用環境變量中指定的用戶連接到數據庫。

似乎pg_dump在從 Rails 調用以轉儲模式時,沒有使用配置中的正確用戶名,而是回退到root

在源代碼中看到一些配置環境變量,但是我應該如何設置它們,為什么 Rails 默認不這樣做?

我認為它在我docker-compose.yml文件中創建一個附加的環境變量PGUSER時起作用,該變量與DATABASE_USER具有相同的值。 但這似乎是一種解決方法 - 這是我看到的錯誤還是一些預期的行為?

到目前為止,我找到的唯一解決方案是為 Rails 容器指定一個名為PGUSER的附加環境變量。

我認為這是一個錯誤或沒有正確記錄。

暫無
暫無

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

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