仕事では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は、これをさせたくないときに指定する。