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