Postgresの初期設定(ユーザの作成)

仕事ではMySQLばかりであまり使うことのないPostgres。
コマンドがまるで違うので備忘録として!

psql経由でデータベースログイン

mbp-Ryosuke:~ ryosuke$ psql -d postgres -U [ユーザ名]
psql (9.5.1)
Type "help" for help.

postgres=#
  • -d:データベースの指定
  • -U:ユーザ名の指定(特にスーパーユーザを指定していない場合は、PCのログインユーザ名がスーパーユーザになります)

なお、Postgresでは、ユーザのことをロールと呼びます。

ユーザの作成

postgres=# CREATE ROLE mrs LOGIN
ENCRYPTED PASSWORD 'xxxxxxxxxxxxxxxxxxxx'
NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
  • CREATE ROLEに続けて作成するロールの名前を入力します。ここでは「mrs」というロールを作成するようにしています。
  • ロール名に続けてオプションの指定を行います。「LOGIN」を指定すると、データベースに接続可能なユーザになります。
  • パスワードに続けてユーザのパスワードを指定します。PASSWORDの前に「ENCRYPTED」と指定すると暗号化されたパスワードが、「UNENCRYPTED」と指定すると生のパスワードが保存されます。
  • パスワードの続けてロールをスーパーユーザに設定するか有無かを指定します。「SUPERUSER」と指定すると、スーパーユーザが、設定されます。指定しない場合は「NOSUPERUSER」となります。
  • INHERITは、ロールがそのロールが属するロールの権限を"継承"するかどうかを決定します。(詳しく理解できてないです)
  • NOCREATEDBは、そのロールにはデータベースを作成する権限が与えられないようにするときに使用する。
  • NOCREATEROLEは、このロールが新しいロールを作成できないようにするために指定します。(デフォルト値もNOCREATEROLE)
  • NOREPLICATIONは、ロールがストリーミングレプリケーションを初期化でき、システムをバックアップモードとの遷移が可能かどうかを決定する。NOREPLICATIONは、これをさせたくないときに指定する。