Ubuntu 11.10 및 RubyMine에서 개발을 진행 중입니다.
다음은 database.yml에 대한 개발 설정입니다. RubyMine이 나를 위해 만든 것입니다.
development:
adapter: postgresql
encoding: unicode
database: mydb_development
pool: 5
username: myuser
password:
앱을 실행하려고 할 때 아래 에이 오류가 발생하지만 아직 ‘프로젝트’사용자를 만들지 않은 것 같습니다. 그러나 어떻게 사용자를 만들고 postgres에 데이터베이스를 부여 할 수 있습니까? 이것이 문제라면 우분투 에서이 작업을 위해 권장하는 도구는 무엇입니까? 이것이 문제가되지 않으면 조언을 구하십시오.
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이라고 표시된 곳에 버리십시오.
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 의 개발 환경 에서 rails 앱을 postgres와 함께 사용하는 가장 확실한 방법 입니다.
1) Gemfile에서 postgres YAML 및 ‘pg’gem을 사용하여 rails 앱을 만듭니다.
$ rails new my_application -d postgresql
2) CRUD 기능을 제공하십시오. postgres가 작동하는지 확인하는 경우 비계를 만듭니다.
$ rails g scaffold cats name:string age:integer colour:string
3) 현재 옵션 호스트 매개 변수를 포함하지 않는 YAML를 생성한다. 나는 이것이 필요하다는 것을 알았다. 개발 섹션을 편집하고 다음 매개 변수를 작성하십시오.rails 4.0.1
-d postgresql
encoding: UTF-8
host: localhost
database: my_application_development
username: thisismynewusername
password: thisismynewpassword
이 database
매개 변수는 아직 종료되지 않은 데이터베이스에 대한 것이며 username
and password
는 존재하지 않는 역할의 자격 증명입니다. 우리는 나중에 그것들을 만들 것입니다!
이것은 어떻게 config/database.yml
보일 것인가입니다 (복사 붙여 넣기에 부끄러움이 없습니다 : D).
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:
4)이 명령으로 postgres 쉘을 시작하십시오 :
$ psql
4a) 현재 사용자 (컴퓨터 사용자와 마찬가지로)에 해당 관리 postgres 역할이없는 경우이 오류가 발생할 수 있습니다.
psql: FATAL: role "your_username" does not exist
이제 postgres를 한 번만 설치 했으므로 여기에 잘못되었을 수 있지만 postgres가 postgres를 설치 한 사용자와 동일한 자격 증명으로 관리 역할을 자동으로 생성한다고 생각합니다.
4b) 따라서 psql 명령을 사용하고 셸을 시작하려면 postgres를 설치 한 사용자로 변경해야합니다.
$ sudo su postgres
그런 다음 실행
$ psql
5) 터미널이 다음과 같이 표시되므로 postgres 쉘에 있음을 알 수 있습니다.
$ psql
psql (9.1.10)
Type "help" for help.
postgres=#
6) postgresql 구문을 사용하여 config/database.yml
의 개발 섹션 에서 지정한 사용자를 만듭니다 .
postgres=# CREATE ROLE thisismynewusername WITH LOGIN PASSWORD 'thisismynewpassword';
자, 여기에 미묘한 부분이 있으므로 살펴 보겠습니다.
- 역할의 이름은 thisismynewusername는 , 하지 않는 주변에 어떤 종류의 따옴표를
- WITH 뒤에 키워드 LOGIN 을 지정하십시오 . 그렇지 않으면 역할이 계속 생성되지만 데이터베이스에 로그인 할 수 없습니다!
- 역할 비밀번호 인 thisismynewpassword 는 작은 따옴표로 묶어야합니다. 큰 따옴표가 아닙니다 .
- 끝에 세미콜론을 추가하십시오.)
터미널에서 이것을 볼 수 있습니다 :
postgres=#
CREATE ROLE
postgres=#
이것은 “ROLE CREATED”를 의미하지만 postgres의 경고는 git hub의 동일한 명령 규칙을 채택하는 것 같습니다.
7) 이제 postgres 셸에서 YAML에 설정 한 이름으로 데이터베이스를 만들어야합니다. 6 단계에서 만든 사용자를 소유자로 만듭니다.
postgres=# CREATE DATABASE my_application_development OWNER thisismynewusername;
결과를 얻을 수 있으므로 성공했는지 알 수 있습니다.
CREATE DATABASE
8) postgres 쉘을 종료하십시오 :
\q
9) 이제 진실의 순간 :
$ RAILS_ENV=development rake db:migrate
당신이 이것을 얻는다면 :
== CreateCats: migrating =================================================
-- create_table(:cats)
-> 0.0028s
== CreateCats: migrated (0.0028s) ========================================
축하합니다, postgres는 앱과 완벽하게 작동합니다.
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) ========================================
당신이 일어나면 몇 가지 팁과 트릭
다음 단계를 모두 다시 시작하기 전에 다음을 시도하십시오.
mynewusername 사용자에게 my_app_development
데이터베이스 에 대한 CRUD 권한이 없습니까? 데이터베이스를 삭제하고 소유자로 mynewusername을 사용하여 다시 작성하십시오.
1) postgres 쉘을 시작하십시오 :
$ psql
2) my_app_development
데이터베이스를 삭제하십시오 . 조심해! 드롭은 완전히 삭제하는 것을 의미합니다!
postgres=# DROP DATABASE my_app_development;
3) 다른 my_app_development
것을 다시 만들고 mynewusername을 소유자로 만드십시오.
postgres=# CREATE DATABASE my_application_development OWNER mynewusername;
4) 쉘을 종료하십시오.
postgres=# \q
mynewusername
사용자가 데이터베이스에 로그인 할 수 있습니까? YAML에 잘못된 비밀번호를 작성했으며 postgres 쉘을 사용하여 입력 한 비밀번호를 기억할 수 없다고 생각하십니까? YAML 비밀번호로 역할을 변경하기 만하면됩니다.
1) YAML을 열고 암호를 클립 보드에 복사하십시오.
development:
adapter: postgresql
pool: 5
# these are our new parameters
encoding: UTF-8
database: my_application_development
host: localhost
username: thisismynewusername
password: musthavebeenverydrunkwheniwrotethis
2) postgres 쉘을 시작하십시오 :
$ psql
3) mynewusername
비밀번호를 업데이트 합니다. 비밀번호를 붙여넣고 작은 따옴표를 사용하십시오.
postgres=# ALTER ROLE mynewusername PASSWORD `musthavebeenverydrunkwheniwrotethis`;
4) 쉘을 종료하십시오.
postgres=# \q
Dbeaver와 같은 데이터베이스 뷰어를 통해 localhost에 연결하려고하는데 postgres 사용자 비밀번호가 무엇인지 모르십니까? 다음과 같이 변경하십시오.
1) passwd
수퍼 유저로 실행하십시오 .
$ sudo passwd postgres
2) 계정 암호를 입력하십시오 sudo
(postgres와 관련이 없음).
[sudo] password for starkers: myaccountpassword
3) 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
4) 사용자에게 데이터베이스 작성 기능을 제공해야합니다. psql 쉘에서 :
ALTER ROLE thisismynewusername WITH CREATEDB
답변
영구적 인 솔루션 :
문제는 pg_hba에 있습니다. 이 줄 :
local all postgres peer
해야한다
local all postgres md5
그런 다음이 파일을 변경 한 후 postgresql 서버를 다시 시작하십시오.
Linux를 사용하는 경우 command는
sudo service postgresql restart
답변
우분투 컴퓨터에서 동일한 문제에 직면하여 몇 가지 단계를 수행 하여이 오류를 제거했습니다. 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
버전 반환 양식 상단 명령입니다
교체
local all postgres peer
에
local all postgres md5
서비스를 다시 시작하십시오
sudo service postgresql restart
내 블로그에도 단계를 씁니다.
http://tarungarg402.blogspot.in/2014/10/set-up-postgresql-on-ubuntu.html
답변
/var/lib/pgsql/data/pg_hba.conf 파일로 이동하여 Ident 대신 신뢰를 추가 할 수 있습니다.
local all all trust
host all 127.0.0.1/32 trust
자세한 내용은이 문제를 참조하십시오.
사용자에 대한 ID 인증 실패
답변
host: localhost
나를 위해 마법을 추가
development:
adapter: postgresql
database: database_name_here
host: localhost
username: user_name_here
답변
Peer authentication failed for user (PG::Error)
단위 테스트를 실행할 때 해당 오류 메시지 ( ) 가 표시 되면 테스트 데이터베이스가 존재하는지 확인하십시오.