postgresqlでdbのユーザーを作成する方法は?[閉まっている]


199

CentOSサーバーにPostgreSQL 8.4をインストールし、シェルからrootユーザーに接続してPostgreSQLシェルにアクセスしました。

PostgreSQLでデータベースとユーザーを作成しました。

PHPスクリプトから接続しようとすると、認証が失敗したことが表示されます。

新しいユーザーを作成するにはどうすればよいですか。また、特定のDBに対してユーザーに権限を付与するには


エラーメッセージは正確には何ですか?psqlコマンドラインからログインできますか?
a_horse_with_no_name

25
これは世界でどのように話題から外れたのですか?
Ben Creasy 2017

@BenCreasyは、serverfault.comまたはスーパーユーザーに適しているためでしょうか?
knocte 2017

2
@knocteだから、「プログラミングまたはプログラミングツールに直接関与しない限り」という例外がある6に該当すると言っていると思います。postgresはプログラミングツールとしてカウントされないのでしょうか。興味深いテイク
Ben 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
Ubuntuの場合sudo su - postgres
Hengjie 2013年

57
Ubuntuの場合、実際には次のようになります。sudo
Mario

2
:私は、コマンドを発行する最もポータブルな方法があることだと思うpsql -U postgres -c "CREATE ROLE..."
ヒューゴ・モタ

31
シェルで入力して実行したものはすべて、選択したパスワードを含め、通常シェルの履歴に残ることに注意してください。
午前

7
コマンド'との違いに注意して"ください!
アンディラブス2016年

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 'Connected to' .pg_dbname($ connHandler); ?>

@Darji Krunal:PHPエラーとは何ですか?
Vidul

1
すべての特権を付与* ...
Arpit Sing
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.