postgresql에서 DB에 대한 사용자를 만드는 방법은 무엇입니까? [닫은]


199

CentOS 서버에 PostgreSQL 8.4를 설치하고 셸에서 루트 사용자에게 연결하고 PostgreSQL 셸에 액세스했습니다.

PostgreSQL에서 데이터베이스와 사용자를 만들었습니다.

내 PHP 스크립트에서 연결을 시도하는 동안 인증이 실패했음을 표시합니다.

새 사용자를 생성하고 특정 DB에 대한 권한을 부여하는 방법은 무엇입니까?


오류 메시지는 정확히 무엇입니까? psql명령 줄에서 로그인 할 수 있습니까?
a_horse_with_no_name

25
세계에서 이것이 주제를 벗어난 주제로 어떻게 폐쇄 되었습니까?
벤 Creasy

@BenCreasy는 serverfault.com 또는 수퍼 유저에게 더 적합하기 때문일 수 있습니다.
knocte

2
@knocte 그래서 "프로그래밍 또는 프로그래밍 도구를 직접 포함하지 않는 한"예외가 6에 해당한다고 가정하고 postgres가 프로그래밍 도구로 간주되지 않는다고 생각합니까? 흥미로운 테이크
벤 Creasy

답변:


339

CLI에서 :

$ su - postgres 
$ psql template1
template1=# CREATE USER tester WITH PASSWORD 'test_password';
template1=# GRANT ALL PRIVILEGES ON DATABASE "test_database" to tester;
template1=# \q

PHP (localhost에서 테스트 한대로 예상대로 작동) :

  $connString = 'port=5432 dbname=test_database user=tester password=test_password';
  $connHandler = pg_connect($connString);
  echo 'Connected to '.pg_dbname($connHandler);

14
우분투의 경우sudo su - postgres
Hengjie

57
우분투의 경우 sudo -u postgres psql
Mario

2
명령 psql -U postgres -c "CREATE ROLE..."
Hugo Mota

31
쉘에서 입력하고 실행하는 모든 항목은 일반적으로 선택한 비밀번호를 포함하여 쉘 히스토리로 끝납니다.
amn

7
명령 '"명령의 차이점을 주목하십시오 !
andilabs

42

비밀번호를 사용하여 사용자를 작성하십시오.

http://www.postgresql.org/docs/current/static/sql-createuser.html

CREATE USER name [ [ WITH ] option [ ... ] ]

where option can be:

      SUPERUSER | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | CREATEROLE | NOCREATEROLE
    | CREATEUSER | NOCREATEUSER
    | INHERIT | NOINHERIT
    | LOGIN | NOLOGIN
    | REPLICATION | NOREPLICATION
    | CONNECTION LIMIT connlimit
    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
    | VALID UNTIL 'timestamp'
    | IN ROLE role_name [, ...]
    | IN GROUP role_name [, ...]
    | ROLE role_name [, ...]
    | ADMIN role_name [, ...]
    | USER role_name [, ...]
    | SYSID uid

그런 다음 특정 데이터베이스에 대한 사용자 권한을 부여하십시오.

http://www.postgresql.org/docs/current/static/sql-grant.html

예 :

grant all privileges on database db_name to someuser;

1
나는 이미 이것을했다 : 비밀번호 'ravi'를 가진 사용자 ravi를 생성; 데이터베이스 nominatim에 대한 모든 권한을 ravi에 부여하십시오. 그러나 다음 PHP 코드로 연결할 수 없습니다. <? php $ connString = 'host = localhost port = 5432 dbname = nominatim user = ravi password = ravi'; $ connHandler = pg_connect ($ connString); echo ''.pg_dbname ($ connHandler)에 연결되었습니다; ?>

@ Darji Krunal : PHP 오류는 무엇입니까? 어떻게 보입니까?
Vidul

1
모든 특권 부여 * ...
Arpit Singh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.