programing

레일 및 포스트그레SQL: 역할 게시자가 없습니다.

showcode 2023. 5. 5. 10:03
반응형

레일 및 포스트그레SQL: 역할 게시자가 없습니다.

Postgre를 설치했습니다.제 Mac OS Lion에서 SQL을 사용하고 있으며 레일 앱을 개발하고 있습니다.RVM을 사용하여 다른 Rails 앱과 모든 것을 분리합니다.

어떤 이유로 제가 처음으로 DB를 마이그레이션하려고 할 때 Rake가 postgres 사용자를 찾을 수 없습니다.나는 오류를 이해합니다.

 FATAL:  role "postgres" does not exist

저는 pgAdmin을 가지고 있어서 DB에 postgres 사용자가 있다는 것을 확실히 알 수 있습니다. - 사실 admin 계정입니다. - 그래서 저는 다른 무엇을 해야 할지 모르겠습니다.

사람들이 Postgre와 문제가 있다는 것을 어디선가 읽었습니다.SQL이 설치된 경로 때문에 SQL이지만, DB를 찾을 수 없었다면 그렇게 멀리 가지 못했을 것 같습니다.

사실 알 수 없는 이유로 postgresql 역할이 생성되지 않았기 때문에 문제가 발생했습니다.

실행 시도:

createuser -s -r postgres

역할은 Postgre의 방식입니다.SQL은 데이터베이스 사용 권한을 유지합니다.postgres 사용자에 대한 역할이 없으면 아무 것도 액세스할 수 없습니다.CREATEUSER 명령어는 CREATE USER, CREATE ROLE 등의 명령어 주위에 얇은 래퍼입니다.

최근에 나는 포스트그레스를 설치한 직후에 이 문제가 생겼습니다.설치 후 바로 제공되는 경우 기본 사용자인 postgres가 누락될 수 있습니다.이 경우 아래 명령을 사용하여 기본 사용자 postgres를 만들 수 있습니다.

사용자 -s -U $USER 생성

Ex: createuser -s -U $USER
enter your required role name: postgres
enter password for your the user: 

필요한 데이터베이스 역할 이름과 암호를 입력하라는 메시지가 표시됩니다. 프로세스가 완료되면 아래 명령을 사용하여 postgres 콘솔에 로그인할 수 있습니다.

psql -U 'your_database_name'

(): psql -U postgres()
여기서 사용자를 생성하는 동안 암호를 입력한 경우 암호를 입력해야 합니다.

도움이 되길 바랍니다 :)

저는 OSX 10.8을 사용하고 있었고, 제가 시도한 모든 것이 저에게FATAL: role "USER" does not exist많은 사람들이 여기서 말했듯이, 도망가.createuser -s USER하지만 그것은 저에게 같은 오류를 주었습니다.이것은 마침내 저에게 효과가 있었습니다.

$ sudo su
# su postgres
# createuser -s --username=postgres MYUSERNAME

createuser -s --username=postgrespostgres(--sys=postgres 플래그)로 연결하여 슈퍼 사용자(-s 플래그)를 생성합니다.

당신의 질문에 답변이 된 것은 알지만, 저는 Postgre를 설치하려는 OSX를 사용하는 사람들을 위해 이 답변을 에 추가하고 싶습니다.SQL 9.2.4.

데이터베이스 사용자가 없는 경우 이 메시지가 나타납니다.여기서 설명서를 비교해 보십시오.
여러 개의 로컬 데이터베이스를 설명할 수 없습니다.역할은 클러스터 차원에서 유효합니다.설명서 다시 보기:

역할은 데이터베이스 클러스터 수준에서 정의되므로 클러스터의 모든 데이터베이스에서 유효합니다.

다른 데이터베이스 클러스터로 이동해야 합니다.다른 포트를 수신하는 다른 서버가 같은 컴퓨터에서 실행됩니다.아니면, 다른 기계에 있을 가능성이 더 높습니다.

원격 서버에서 메시지가 전송되는 것일 수 있습니까?

이 문제는 Heroku의 POSTGRES.app을 처음 설치했을 때 바로 해결되었습니다.아침에 시행착오를 겪은 후에 저는 이 한 줄의 코드가 문제를 해결했다고 생각합니다.앞에서 설명한 것처럼 postgresql은 처음 설정할 때 기본 역할이 없기 때문입니다.그리고 우리는 그것을 설정해야 합니다.

sovanlandy=# CREATE ROLE postgres LOGIN;

이 psql 명령을 사용하려면 해당 psql 콘솔에 로그인해야 합니다.

또한 'postgre' 역할을 이미 생성했지만 여전히 권한 오류가 발생하는 경우 다음 명령을 사용하여 변경해야 합니다.

sovanlandy=# ALTER ROLE postgres LOGIN;

도움이 되길 바랍니다!

Heroku 문서의 시작 화이트 레일 4에서 다음과 같이 말합니다.

또한 다음과 같은 사용자 이름 필드가 있는 경우 database.yml에서 사용자 이름 필드를 제거해야 합니다. in file config/database.yml remove: username: myapp

그런 다음 "myapp" 역할로 작동하는 데이터베이스에 페이지를 표시하지 않으면 "development:"에서 해당 행을 삭제합니다.

이 행은 myapp_development 데이터베이스가 myapp 역할로 실행되어야 한다는 것을 레일에 알려줍니다.데이터베이스에 이 역할이 없을 수 있으므로 제거합니다.라인 제거를 사용하여 레일즈는 현재 컴퓨터에 로그인한 사용자로 데이터베이스에 액세스하려고 시도합니다.

또한 개발을 위해 데이터베이스를 작성해야 합니다.

$createdb myapp_development

"myapp"을 앱 이름으로 바꿉니다.

하면 설치듭절다사라는 됩니다.postgres기본 Postgres 역할과 연결되어 있습니다.Postgres를 사용하려면 해당 계정에 로그인하면 됩니다.그러나 명시적으로 지정되지 않은 경우 레일즈 앱은 다른 역할, 특히 postgres 역할에서 생성되지 않을 수 있는 unix 사용자 이름을 가진 역할을 찾습니다.

이 문제를 해결하려면 먼저 설치 중에 생성된 기본 역할 포스트로 전환하여 새 역할을 생성할 수 있습니다.

sudo -i -u postgres

postgres 계정에 로그인한 후 다음 명령을 사용하여 새 사용자를 생성할 수 있습니다.

createuser --interactive

이렇게 하면 몇 가지 선택 사항을 묻는 메시지가 표시되고 응답에 따라 올바른 Postgres 명령을 실행하여 사용자를 만듭니다.

역할 이름과 일부 권한을 넘겨주고 역할이 생성되면 DB를 마이그레이션할 수 있습니다.

여러 개의 로컬 데이터베이스를 사용할 수 있습니까?확인합니다.database.yml그리고 당신이 원하는 pgdb를 치고 있는지 확인하세요.사용하다rails console확인하기 위해

제 대답은 훨씬 더 간단했습니다.방금 db 폴더로 가서 강제로 만들려고 했지만 실제로 자동으로 만들어진 id 열을 삭제했습니다.또한 database.yml 파일(config 폴더 아래)에서 USERNAME을 삭제했습니다.

루트 사용자가 아닌 Ubuntu 로컬 사용자 명령 프롬프트에서 다음을 입력합니다.

sudo -u postgres 사용자 이름 생성

위의 사용자 이름은 "FATAL: 역할 'username'이(가) 존재하지 않습니다." 메시지에 표시된 이름과 일치해야 합니다.

사용자 이름의 암호를 입력하십시오.

그런 다음 생성된 역할이 존재하지 않는다는 메시지가 표시된 명령을 다시 입력합니다.

저는 Ryan Bate의 AWS EC2에 고무로 배포하는 방법에 대한 튜토리얼을 따라 하려고 시도한 후 여기에 오게 되었습니다.제가 겪은 일은 다음과 같습니다."를 사용하여 새 앱을 만들었습니다.

rails new blog -d postgresql

분명히 이것은 pg를 데이터베이스로 하는 새로운 앱을 만들지만, 데이터베이스는 아직 만들어지지 않았습니다.sqlite에서는 rake db:migrate를 실행하기만 하면 되지만 pg에서는 먼저 pg 데이터베이스를 만들어야 합니다.라이언은 이 단계를 수행하지 않았습니다.명령어는rake db:create:all그럼 우린 도망갈 수 있어요rake db:migrate

두 번째 부분은 database.yml 파일을 변경하는 것입니다.파일이 생성될 때 사용자 이름의 기본값은 'appname'입니다.하지만, postgresql 관리자에 대한 당신의 역할은 뭔가 다를 수 있습니다(적어도 저에게는 그랬습니다).저는 제 이름으로 바꿨습니다(역할 이름을 만드는 것에 대한 위의 조언 참조). 저는 기꺼이 갔습니다.

이게 도움이 되길 바랍니다.

Postgres를 여러 번 설치하고 제거한 후, OS X 매버릭스, Rails 4 및 Ruby 2에서 일관되게 작동하는 것처럼 보이는 것은 다음과 같습니다.

  1. database.yml 파일에서 기본 사용자 이름을 컴퓨터의 사용자 이름("admin")으로 변경합니다.

  2. 명령줄에서 rake db:create:all을 실행합니다.

  3. 그런 다음 Rake db:migrate를 실행합니다.

  4. Rails 서버를 실행하고 로컬 호스트를 확인하면 "Welcome board"라고 표시됩니다.

하려면 를실하문해수있다습니결을 실행하면 .initdb -U postgres -D /path/to/data또는 현재 사용자로 기본 설정되어 있으므로 사용자 postgres로 실행합니다.GL!

언급URL : https://stackoverflow.com/questions/7863770/rails-and-postgresql-role-postgres-does-not-exist

반응형