레일: FATAL - 사용자에 대한 피어 인증 실패(PG:: 오류)
Ubuntu 11.10 및 RubyMine에서 개발을 실행하고 있습니다.
다음은 데이터베이스에 대한 내 개발 설정입니다.yml: 루비마인이 나를 위해 만든 것.
development:
adapter: postgresql
encoding: unicode
database: mydb_development
pool: 5
username: myuser
password:
앱을 실행하려고 하면 아래와 같은 오류가 발생합니다. 아직 '프로젝트' 사용자를 생성하지 않은 것 같습니다. 하지만 사용자를 생성하고 데이터베이스를 postgres로 부여하는 방법은 무엇입니까? 만약 이것이 문제가 아니라면 Ubuntu에서 이 작업에 사용하는 권장 도구는 무엇입니까? 조언해 주십시오.
Exiting
/home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:1194:in `initialize': FATAL: Peer authentication failed for user "project" (PG::Error)
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:1194:in `new'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:1194:in `connect'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:329:in `initialize'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `new'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `postgresql_connection'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:303:in `new_connection'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:313:in `checkout_new_connection'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:237:in `block (2 levels) in checkout'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:232:in `loop'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:232:in `block in checkout'
from /home/sam/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:229:in `checkout'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:95:in `connection'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:398:in `retrieve_connection'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:168:in `retrieve_connection'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:142:in `connection'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/model_schema.rb:308:in `clear_cache!'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/railtie.rb:91:in `block (2 levels) in <class:Railtie>'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/callbacks.rb:418:in `_run__757346023__prepare__404863399__callbacks'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/callbacks.rb:405:in `__run_callback'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/callbacks.rb:385:in `_run_prepare_callbacks'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/callbacks.rb:81:in `run_callbacks'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/actionpack-3.2.3/lib/action_dispatch/middleware/reloader.rb:74:in `prepare!'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/actionpack-3.2.3/lib/action_dispatch/middleware/reloader.rb:48:in `prepare!'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/application/finisher.rb:47:in `block in <module:Finisher>'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/initializable.rb:30:in `instance_exec'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/initializable.rb:30:in `run'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/initializable.rb:55:in `block in run_initializers'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/initializable.rb:54:in `each'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/initializable.rb:54:in `run_initializers'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/application.rb:136:in `initialize!'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/railtie/configurable.rb:30:in `method_missing'
from /home/sam/RubymineProjects/project/config/environment.rb:5:in `<top (required)>'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `require'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `block in require'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:236:in `load_dependency'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `require'
from /home/sam/RubymineProjects/project/config.ru:4:in `block in <main>'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/builder.rb:51:in `instance_eval'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/builder.rb:51:in `initialize'
from /home/sam/RubymineProjects/project/config.ru:1:in `new'
from /home/sam/RubymineProjects/project/config.ru:1:in `<main>'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/builder.rb:40:in `eval'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/builder.rb:40:in `parse_file'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/server.rb:200:in `app'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/commands/server.rb:46:in `app'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/server.rb:301:in `wrapped_app'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/server.rb:252:in `start'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/commands/server.rb:70:in `start'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/commands.rb:55:in `block in <top (required)>'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/commands.rb:50:in `tap'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/commands.rb:50:in `<top (required)>'
from /home/sam/RubymineProjects/project/script/rails:6:in `require'
from /home/sam/RubymineProjects/project/script/rails:6:in `<top (required)>'
from -e:1:in `load'
from -e:1:in `<main>'
Process finished with exit code 1
서버에 postresql을 설치한 경우 host: localhost to database.yml만 설치하면 일반적으로 pool: 5로 표시되는 곳에 postresql을 넣습니다.그렇지 않으면 로컬 호스트가 아닌 경우 해당 앱에서 데이터베이스를 찾을 수 있는 위치를 확실히 알려줍니다.
development:
adapter: postgresql
encoding: unicode
database: kickrstack_development
host: localhost
pool: 5
username: kickrstack
password: secret
데이터베이스를 만들고 앱 사용자에게 연결을 설정할 소유권을 할당하여 사용자 자격 증명이 올바르게 설정되었는지 확인합니다.postgresql 9에서 새 사용자를 생성하려면 다음을 실행합니다.
sudo -u postgres psql
postgresql 사용자 암호를 설정하지 않은 경우 백슬래시 암호일 뿐입니다.
postgres=# \password
새 사용자 및 암호와 사용자의 새 데이터베이스를 만듭니다.
postgres=# create user "guy_on_stackoverflow" with password 'keepitonthedl';
postgres=# create database "dcaclab_development" owner "guy_on_stackoverflow";
이제 데이터베이스, 사용자, 암호를 만들고 이러한 권한을 설정한 후 database.yml 파일을 업데이트합니다.호스트: localhost를 잊지 마십시오.
이것은 Ubuntu 13.10의 개발 환경에서 포스트그래스와 함께 레일 앱을 작동시키는 가장 확실한 방법입니다.
Gem 파일에 포스트그레스 YAML과 'pg' 보석이 있는 레일 앱을 만듭니다.
$ rails new my_application -d postgresql
CRUD 기능을 제공합니다.포스트그레스가 효과가 있는지 확인하고 있다면, 발판을 만드십시오.
$ rails g scaffold cats name:string age:integer colour:string
기준rails 4.0.1
그자리의 -d postgresql
옵션은 호스트 매개 변수를 포함하지 않는 YAML을 생성합니다.난 이게 필요하다는 걸 알았어요개발 섹션을 편집하고 다음 매개 변수를 생성합니다.
encoding: UTF-8
host: localhost
database: my_application_development
username: thisismynewusername
password: thisismynewpassword
에 하십시오.database
데이터베이스에 이며, "" " " " " " " 입니다.username
그리고.password
존재하지 않는 역할의 자격 증명입니다.나중에 만들겠습니다.
이 이런식로의 방법입니다.config/database.yml
를 해야 합니다.
development:
adapter: postgresql
pool: 5
# these are our new parameters
encoding: UTF-8
database: my_application_development
host: localhost
username: thisismynewusername
password: thisismynewpassword
test:
# this won't work
adapter: postgresql
encoding: unicode
database: my_application_test
pool: 5
username: my_application
password:
production:
# this won't work
adapter: postgresql
encoding: unicode
database: my_application_production
pool: 5
username: my_application
password:
다음 명령을 사용하여 postgres 셸을 시작합니다.
$ psql
4a) 현재 사용자(예: 컴퓨터 사용자)에게 해당 관리 포스트그레스 역할이 없는 경우 이 오류가 발생할 수 있습니다.
psql: FATAL: role "your_username" does not exist
이제는 postgres를 한 번만 설치했기 때문에 여기서 틀릴 수도 있지만, postgres는 postgres를 설치한 사용자와 동일한 자격 증명을 사용하여 관리 역할을 자동으로 생성한다고 생각합니다.
4b) 따라서 postgres를 설치한 사용자로 변경하여 psql 명령을 사용하고 셸을 시작해야 합니다.
$ sudo su postgres
그리고 뛰어요.
$ psql
당신은 당신의 터미널이 다음과 같이 보일 것이기 때문에 당신이 포스트그레스 쉘에 있다는 것을 알게 될 것입니다.
$ psql
psql (9.1.10)
Type "help" for help.
postgres=#
구문을 하여 postgresql에서 config/database.yml
의 개발 섹션:
postgres=# CREATE ROLE thisismynewusername WITH LOGIN PASSWORD 'thisismynewpassword';
자, 여기에 미묘한 점들이 몇 가지 있으니 검토해 보겠습니다.
- 역할의 사용자 이름, 이 이름은 내 새 사용자 이름이며 역할 주위에 어떤 종류의 따옴표도 없습니다.
- WITH 뒤에 LOGIN 키워드를 지정합니다.그렇지 않으면 역할이 계속 생성되지만 데이터베이스에 로그인할 수 없습니다!
- 역할의 암호, 즉 내 새 암호는 따옴표로 묶어야 합니다.큰따옴표가 아닙니다.
- 끝에 세미콜론 추가 ;)
단말기에 다음과 같은 내용이 표시됩니다.
postgres=#
CREATE ROLE
postgres=#
즉, "ROLE CREATED(역할 생성)"이지만 포스트그레스의 경고는 깃허브와 동일한 필수 규칙을 채택하는 것으로 보입니다.
Postgres 셸에서는 YAML에서 설정한 이름으로 데이터베이스를 만들어야 합니다. 6단계에서 만든 사용자를 소유자로 만듭니다.
postgres=# CREATE DATABASE my_application_development OWNER thisismynewusername;
다음과 같은 결과를 얻을 수 있기 때문에 성공 여부를 알 수 있습니다.
CREATE DATABASE
postgres 쉘을 종료합니다.
\q
이제 진실의 순간:
$ RAILS_ENV=development rake db:migrate
다음과 같은 정보를 얻을 수 있습니다.
== CreateCats: migrating =================================================
-- create_table(:cats)
-> 0.0028s
== CreateCats: migrated (0.0028s) ========================================
축하합니다. 게시물이 앱에서 완벽하게 작동합니다.
9a) 로컬 컴퓨터에서 권한 오류가 계속 발생했습니다.정확히 기억할 수는 없지만, 그것은 다음과 같은 오류였습니다.
Can't access the files. Change permissions to 666.
프로덕션 시스템에서 쓰기 권한을 재귀적으로 설정하는 것에 대해 매우 신중하게 생각하는 것이 좋지만, 로컬에서는 전체 앱에 다음과 같은 읽기 쓰기 권한을 부여했습니다.
9b) 한 디렉터리 수준 위로 이동:
$ cd ..
9c) my_application 디렉터리 및 모든 디렉터리의 권한을 666으로 설정합니다.
$ chmod -R 0666 my_application
9d) 마이그레이션을 다시 실행합니다.
$ RAILS_ENV=development rake db:migrate
== CreateCats: migrating =================================================
-- create_table(:cats)
-> 0.0028s
== CreateCats: migrated (0.0028s) ========================================
만약 당신이 실수를 한다면 몇 가지 팁과 속임수법.
다음 단계를 모두 다시 시작하기 전에 다음을 시도하십시오.
my_app_development
하고 로 사용하여 다시 .데이터베이스를 삭제하고 새 사용자 이름을 소유자로 사용하여 다시 만듭니다.
postgres 셸을 시작합니다.
$ psql
드롭 더my_app_development
데이터베이스조심해!삭제는 완전히 삭제됨을 의미합니다!
postgres=# DROP DATABASE my_app_development;
다른 항목 재생성my_app_development
내 새 사용자 이름을 소유자로 만듭니다.
postgres=# CREATE DATABASE my_application_development OWNER mynewusername;
셸을 종료합니다.
postgres=# \q
그mynewusername
사용자가 데이터베이스에 로그인할 수 없습니까?당신이 YAML에 비밀번호를 잘못 적었고 postgres 쉘을 사용하여 입력한 비밀번호를 잘 기억하지 못한다고 생각하십니까?YAML 암호를 사용하여 역할을 변경하기만 하면 됩니다.
YAML을 열고 암호를 클립보드에 복사합니다.
development:
adapter: postgresql
pool: 5
# these are our new parameters
encoding: UTF-8
database: my_application_development
host: localhost
username: thisismynewusername
password: musthavebeenverydrunkwheniwrotethis
postgres 셸을 시작합니다.
$ psql
업데이트mynewusername
의 암호.암호를 붙여넣고 암호 주위에 작은 따옴표를 붙여야 합니다.
postgres=# ALTER ROLE mynewusername PASSWORD `musthavebeenverydrunkwheniwrotethis`;
셸을 종료합니다.
postgres=# \q
Dbeaver와 같은 데이터베이스 뷰어를 통해 localhost에 연결하려고 하는데 Postgres 사용자의 암호가 무엇인지 모르십니까?다음과 같이 변경합니다.
실행passwd
슈퍼유저로서:
$ sudo passwd postgres
다음에 대한 계정 암호 입력sudo
(포스트그레스와 관련 없음):
[sudo] password for starkers: myaccountpassword
postgres 계정의 새 암호를 만듭니다.
Enter new UNIX password: databasesarefun
Retype new UNIX password: databasesarefun
passwd: password updated successfully
이 오류 메시지가 표시됩니까?:
Run `$ bin/rake db:create db:migrate` to create your database
$ rake db:create db:migrate
PG::InsufficientPrivilege: ERROR: permission denied to create database
사용자에게 데이터베이스를 작성할 수 있는 기능을 제공해야 합니다.psql 셸에서:
ALTER ROLE thisismynewusername WITH CREATEDB
영구 솔루션의 경우:
당신의 pg_hba에 문제가 있습니다.다음 줄:
local all postgres peer
그래야 한다
local all postgres md5
그런 다음 이 파일을 변경한 후 postgresql 서버를 다시 시작합니다.
Linux를 사용하는 경우 명령어는 다음과 같습니다.
sudo service postgresql restart
Ubuntu 기계에서도 같은 문제가 발생하여 몇 가지 단계를 수행하여 이 오류를 제거했습니다.postgres 사용자로 전환
$ sudo su - postgres
암호를 요청하며 기본적으로 암호는postgres
사용자를 postgres로 전환한 후 psql 콘솔을 엽니다.
$ psql
따라서 여러 버전을 사용할 수 있는 경우 postgres 버전을 확인합니다.
psql=# select VERSION();
PostgreSQL 9.1.13 on x86_64-unk.... # so version is 9.1
이제 열기postgres user
vim /etc/postgresql/9.1/main/pg_hba.conf
9.1
is version return form upper 명령어
및 대체
local all postgres peer
로.
local all postgres md5
서비스 다시 시작
sudo service postgresql restart
나는 또한 내 블로그에 단계를 씁니다.
http://tarungarg402.blogspot.in/2014/10/set-up-postgresql-on-ubuntu.html
추가 중host: localhost
나에게 마법이었습니다.
development:
adapter: postgresql
database: database_name_here
host: localhost
username: user_name_here
Ident It worked 대신 /var/lib/pgsql/data/pg_hba.conf 파일로 이동하여 신뢰를 추가할 수 있습니다.
local all all trust
host all 127.0.0.1/32 trust
자세한 내용은 이 문제를 참조하십시오. 사용자에 대한 ID 인증 실패
저도 개발 환경에서 작업하는 동안 이와 같은 문제에 직면했습니다. 문제는 제가 떠난다는 것이었습니다.host: localhost
에서 논평한.config/database.yml
파일.
그래서 내 애플리케이션은 Postgre에 연결할 수 없습니다.SQL 데이터베이스의 주석을 달기만 하면 문제가 해결되었습니다.
development:
<<: *default
database: database_name
username: database_username
password: database_password
host: localhost
이상입니다.
이것이 도움이 되길 바랍니다.
당신이 그 메시지를 .Peer authentication failed for user (PG::Error)
테스트를 할 때 가 존재하는지 장치 테스트를 실행할 때 테스트 데이터베이스가 존재하는지 확인합니다.
언급URL : https://stackoverflow.com/questions/9987171/rails-fatal-peer-authentication-failed-for-user-pgerror
'source' 카테고리의 다른 글
.idea 폴더에서 무시할 항목? (0) | 2023.05.02 |
---|---|
mongorestore 실패: 연결할 수 있는 서버가 없습니다. (0) | 2023.05.02 |
Mongoose, CastError: 모델이 포함된 모델을 저장하려고 할 때 값에 대해 배열로 캐스트하지 못했습니다. (0) | 2023.05.02 |
문자열이 Bash 스크립트의 정규식과 일치하는지 확인 (0) | 2023.05.02 |
Git for Unity 3D 소스 제어를 사용하는 방법은 무엇입니까? (0) | 2023.05.02 |