복붙노트

[RUBY-ON-RAILS] PG : ConnectionBad : fe_sendauth는 : 암호가 제공되지

RUBY-ON-RAILS

PG : ConnectionBad : fe_sendauth는 : 암호가 제공되지

내가 로컬 포스트 그레스 데이터베이스에서 "레이크 테스트"를 실행하려고 할 때, 위의 예외가 발생합니다.

여기 내있는 pg_hba.conf 파일은 다음과 같습니다     유닉스 도메인 소켓으로 # 데이터베이스 관리 로그인     지역 모든 포스트 그레스는 피어

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             username                                  peer
local   myapp_dev   myapp                               md5
local   myapp_test  myapp                               md5
local   myapp_prod  myapp                               md5
#local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
#host    replication     postgres        127.0.0.1/32            md5
#host    replication     postgres        ::1/128                 md5

여기 내 database.yml을에서 관련 섹션

test:

adapter: postgresql
database: myapp_test
pool: 5
timeout: 5000
host: localhost
username: username
password:

실제 database.yml을에서 '사용자 이름'나는로 로그인하고 나의 실제 사용자 이름으로 대체됩니다. 인증 방법은 "피어"로 정의되기 때문에, 암호가 필요하지 않을 것이다.

또한 포스트 그레스를 다시 시작 신세를지고있다

sudo -u postgres pg_ctlcluster 9.3 main restart

또 내가 여기에 놓친 거지?

해결법

  1. ==============================

    1.호스트가 인증 방법을 의미 TCP 연결을 의미로 localhost는있는 pg_hba.conf 당 MD5 ​​(암호 필요)입니다 :

    호스트가 인증 방법을 의미 TCP 연결을 의미로 localhost는있는 pg_hba.conf 당 MD5 ​​(암호 필요)입니다 :

    # IPv4 local connections:
    host    all             all             127.0.0.1/32            md5
    # IPv6 local connections:
    host    all             all             ::1/128                 md5
    

    피어 방법이 수행되기 위해서는 당신이 사용하고있는 것으로 보인다 있기 때문에, 당신은 유닉스 도메인 소켓을 통해 연결해야하고, 줄 데비안 같은 OS, 수단이 전혀은 / var / 실행 / 호스트 필드에 PostgreSQL을, 또는 아무것도를 두는 것을 (환경 변수가 다른 말을하지 않는 한이 기본입니다).

    편집 : 발표로 데이터베이스 URI를 사용하는 경우 (레일 - 4.1부터 지원 http://weblog.rubyonrails.org/2014/4/8/Rails-4-1/), 구문이 될 수있다 :

  2. ==============================

    2.다음과 같이 코드를 변경하고 그것을 작동합니다

    다음과 같이 코드를 변경하고 그것을 작동합니다

    pg_hba.conf:
    # IPv4 local connections:
    host    all             all             127.0.0.1/32            trust
    # IPv6 local connections:
    host    all             all             ::1/128                 trust
    

    그 아래 설명 :

    자세한 내용은 여기에 대한 참조

  3. ==============================

    3.당신의 hb_conf 이미 힘 암호에 수정 된 경우, 반드시 당신의 레일 응용 프로그램의 데이터베이스 구성 모두 개발 및 테스트 환경에 암호를 포함합니다.

    당신의 hb_conf 이미 힘 암호에 수정 된 경우, 반드시 당신의 레일 응용 프로그램의 데이터베이스 구성 모두 개발 및 테스트 환경에 암호를 포함합니다.

    default: &default
      adapter: postgresql
      encoding: unicode
      pool: 5
      host: localhost
      username: your_user
      password: your_password
    
    development:
      <<: *default
      database: your_db_development
    
    test:
      <<: *default
      database: your_db_test
    
    production:
      url: <%= ENV['DATABASE_URL'] %>
    

    내가 테스트 데이터베이스에 대한 암호를 제공하는 데 실패 할 때이 오류를 얻고 있었다.

  4. ==============================

    4.나는 포스트 그레스 응용 프로그램을 사용합니다. 어떤 정말 좋은 당신은 database.yml을의 기본 부분에 사용자 이름과 암호를 입력 할 필요가 없기 때문에

    나는 포스트 그레스 응용 프로그램을 사용합니다. 어떤 정말 좋은 당신은 database.yml을의 기본 부분에 사용자 이름과 암호를 입력 할 필요가 없기 때문에

    database.yml을

    default: &default
      adapter: postgresql
      encoding: unicode
      pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
    
    development:
      <<: *default
      database: my-app_development
    
    test:
      <<: *default
      database: my-app_test
    
    production:
      <<: *default
      database: my-app_production
      username: my-app
      password: <%= ENV['MY-APP_DATABASE_PASSWORD'] %>
    

    내 문제 : 나는 경로를 변경하고 작업에 포스트 그레스를 얻을 수 없습니다.

    해결 방법 : 문서로를 사용 :

    1) 제거 응용 프로그램

    2) 포스트 그레스는 sudo는 pkill에 -u 포스트 그레스 사용 말한다이 답변을 사용하여 처리 중지

    3) 다시 설치하고 응용 프로그램을 시작

    모든 것은 지금 잘 작동 좋은 하루 되세요한다!

    참고 : 이렇게하면 또한 사용에 문제 Postgres.app 포트 5432를 해결

  5. ==============================

    5.나도이 질문을 만났다. 내 데이터베이스 설정, /var/www/myproject/shared/config/database.yml을 확인 :

    나도이 질문을 만났다. 내 데이터베이스 설정, /var/www/myproject/shared/config/database.yml을 확인 :

    production: 
    adapter: postgresql 
    pool: 5 
    timeout: 5000 
    encoding: utf8 
    host: localhost 
    database: myproject
    username: myname 
    password: <%= ENV['name_DATABASE_PASSWORD'] %>
    

    내가 마지막 단락이 잘못을 발견, 올바른 코드는

    password: <%= ENV['myproject_DATABASE_PASSWORD'] %>
    
  6. from https://stackoverflow.com/questions/23375740/pgconnectionbad-fe-sendauth-no-password-supplied by cc-by-sa and MIT license