データベース入門 – エンジニアの入り口 https://eng-entrance.com 「エンジニアの入り口」は、プログラミング入門やエンジニアリング入門の知識が満載の初心者のための勉強サイトです。プログラミングやサーバ、ネットワークの基礎知識や勉強方法を習得できます。 Sun, 29 Jul 2018 12:07:44 +0000 ja hourly 1 https://wordpress.org/?v=5.2.19 【初心者向け】PostgreSQLのロールについて分かり易く解説 https://eng-entrance.com/postgresql-role https://eng-entrance.com/postgresql-role#comments Sun, 29 Jul 2018 12:07:44 +0000 https://eng-entrance.com/?p=6907 PostgreSQLで複数のユーザーやグループがデータベースを利用するにあたり、そのアクセス権限を取り決めて設定する必要がある。その際に設定するロールというものについて紹介する。

PostgreSQLのロールとは

PostgreSQLのロールとは、ユーザやグループがデータベースへアクセスすることを管理するための仕組みだ。ロールには名前が付けられ、データベース・オブジェクト(テーブルや関数など)を所有し、他のロールからのアクセスを制限する権限を持つ。オペレーティング・システムのユーザとは完全に独立したものだ。

最初にPostgreSQL が立ち上がるとpostgresという名前のロールが作成されている。このロールは何でもできるスーパーユーザだ。それで、postgresという名前のロールから他のロールに与える権限の管理が始まる。

例えば、postgresが作成したデータベースに別のロール:Aがアクセスしようとすると、データベースへのアクセスは拒否される。

postgresql-role

しかし、データベースを作成して所有者となったpostgresからアクセス権限がAに与えられると、Aはデータベースへのアクセスが可能になる。

postgresql-role

では、新たにロールを作成するところから見てみよう。

ロールの作成

新しくロールを作成するためには、CREATE ROLE SQLコマンドを使って、

CREATE ROLE 名前;

とコマンドを叩けばOKだ。

以下の例はスーパーユーザpostgresがuser01という名前のロールを作成しているところだ。

postgresql-role

別の方法として、コマンドプロンプトからcreateuserプログラムを使って、

createuser 名前;

とコマンドを叩けば同じだ。

ロールの属性

ロールの属性とは、ロールの権限を決めたり認証を行なうためのデータを設定したりするための属性のことだ。

いくつかの属性があるので、ログイン権限から見ていこう。

ログイン権限

ログイン権限とはデータベースに接続することを可能にする権限のことだ。ログイン権限を持つロールの名前を使ってデータベースに接続する。

この権限を持つロールを作成するためのSQLコマンドの書き方は簡単だ。

CREATE ROLE 名前 LOGIN;

又は、

CREATE USER 名前;

とコマンドを叩く。

CREATE ROLEとCREATE USERはほぼ同じだ。しかし、CREATE USERで作成されたロールはログイン属性を持つが、CREATE ROLEだけではログイン属性は付かないので注意が必要だ。

また、ロールの属性を変更したい時は、ALTER ROLE SQLコマンドを使用する。

権限を与えるなら、

ALTER ROLE 名前 LOGIN;

一方、権限を取り去るには、

ALTER ROLE 名前 NOLOGIN;

とコマンドを叩けばOKだ。

スーパーユーザ状態

スーパーユーザ状態はログイン以外に何でもできる権限をロールに与える。便利だが危険な場合もあるので、通常の操作ではスーパーユーザではない目的に応じたロールを使用することが進められている。

この権限を持つロールを作成するためのSQLコマンドの書き方は簡単だ。

CREATE ROLE 名前 SUPERUSER;

とコマンドを叩く。

また、ロールの属性を変更したい時は、ALTER ROLE SQLコマンドを使用する。

権限を与えるなら、

ALTER ROLE 名前 SUPERUSER;

一方、権限を取り去るには、

ALTER ROLE 名前 NOSUPERUSER;

とコマンドを叩けばOKだ。

データベース作成

データベース作成はデータベースを作成する権限をロールに与える。

この権限を持つロールを作成するためのSQLコマンドの書き方は簡単だ。

CREATE ROLE 名前 CREATEDB;

とコマンドを叩く。

また、ロールの属性を変更したい時は、ALTER ROLE SQLコマンドを使用する。

権限を与えるなら、

ALTER ROLE 名前 CREATEDB;

一方、権限を取り去るには、

ALTER ROLE 名前 NOCREATEDB;

とコマンドを叩けばOKだ。

ロール作成

ロール作成はロールを作成する権限をロールに与える。

この権限を持つロールを作成するためのSQLコマンドの書き方は簡単だ。

CREATE ROLE 名前 CREATEROLE;

とコマンドを叩く。

また、ロールの属性を変更したい時は、ALTER ROLE SQLコマンドを使用する。

権限を与えるSQLコマンドの書き方は簡単だ。

ALTER ROLE 名前 CREATEROLE;

一方、権限を取り去るには

ALTER ROLE 名前 NOCREATEROLE;

とコマンドを叩けばOKだ。

注意しなければならない点もある。ロール作成の権限ではロールを変更したり削除したりすることはできない。これらはスーパーユーザでなければできないのだ。

パスワード

パスワードはロールがデータベースに接続する時に要求される場合に必要な属性だ。

この権限を持つロールを作成するためのSQLコマンドの書き方は簡単だ。

CREATE ROLE 名前 PASSWORD 'パスワード';

とコマンドを叩く。

また、ロールの属性を変更したい時は、ALTER ROLE SQLコマンドを使用する。

権限を与えるなら、

ALTER ROLE 名前 PASSWORD 'パスワード';

一方、権限を取り去るには、

ALTER ROLE 名前PASSWORD NULL;

とコマンドを叩けばOKだ。

権限

権限とは、ユーザがテーブルや関数などデータベースのオブジェクトを使用するためにロールに与えられるものだ。オブジェクトが作成されると、そのオブジェクトの所有者が決まる。その所有者はオブジェクトを作成したロールだ。また、その所有者はオブジェクトに対してほとんどの権限を持つことになる。しかし、他のロールがオブジェクトにアクセスしようとすると、アクセスを可能にする権限が必要になる。もし、権限がなければアクセスは拒否される。

権限を与える

権限には、SELECT、 INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES、TRIGGER、CREATE、CONNECT、TEMPORARY、 EXECUTE、USAGEがある。これらの権限をロールに割り当てるために、GRANT SQLコマンドを使う。

SQLコマンドの書き方は簡単だ。

GRANT 特権 ON テーブル名 TO ロール名;

とコマンドを叩く。

テーブルに対する権限の主なものについて次に説明しておく。

権限

内容

SELECT

テーブル、ビュー、シーケンスの任意の列のデータを読み取ることを許可する。

INSERT

テーブルに行を追加することを許可する。

UPDATE

テーブルに対する更新を許可する。

DELETE

テーブルから行を削除することを許可する。

まとめて権限を与える

権限を沢山のロールにひとつひとつ与えることを考えると気が遠くなる。そこで、権限をまとめてシステム内のすべてのロールに与えることができる。

GRANT SQLコマンドでPUBLICを使って、

GRANT 特権 ON テーブル名 TO PUBLIC;

とコマンドを叩けばOKだ。

また、まとめてすべての権限をロールに与える場合はGRANT SQLコマンドでALLを使う。

この場合は、

GRANT ALL ON テーブル名 TO ロール名;

とコマンドを叩く。

権限を取り去る

与えられた権限を取り去るためにGRANT SQLコマンドを使う。

SQLコマンドの書き方は簡単だ。

REVOKE 特権 ON テーブル名 FROM ロール名;

とコマンドを叩く。

ロールの削除

既に作成されたロールを削除するためには、DROP ROLE SQLコマンドを使って、

DROP ROLE 名前;

とコマンドを叩けばOKだ。

以下の例はコマンドを実行してuser01というロールを削除しているところだ。

postgresql-role

別の方法として、コマンドプロンプトからdropuserプログラムを使って、

dropuser 名前;

とコマンドを叩いて削除することも可能だ。

ロールを確認する

既に作成されたロールはpg_rolesシステムカタログに登録されているので、その情報を表示すればよい。

登録済みのロールを確認するにはSELECT SQLコマンドを使って、

SELECT ROLNAME FROM pg_roles;

とコマンドを叩けばOKだ。

別の方法として、psqlの\duコマンドを使って、

\du

とコマンドを叩けばロール属性と共に表示される。

テーブルにアクセスするサンプル

実際にSQLコマンドを実行してロールを作成してデータベースにアクセスするところを見てみよう。

権限を持つロールを作成する

最初にスーパーユーザpostgresでpsqlを起動してログインする。

postgresql-role

データベースにアクセスできる権限を持ったuser01という名前のロールを作成するためにCREATE ROLE user01とコマンドを叩く。

postgresql-role

\duコマンドを使って、正しくロールが作成されたか、ロールの属性は正しいかを確認する。

postgresql-role

実行結果としてuser01が一覧の中に表示されれば正しくロールが作成されたことになる。しかし、属性の欄を見ると、「ログインできない」としか表示されていない。これは、何も属性が与えられていないことを示している。

権限をロールに与える

データベースにアクセスするためにはロールの属性として、ログイン権限、パスワードが設定されなければならない。既に作成されたロールにこれらの属性を持たせるためにはALTER ROLE SQLコマンドを使用する。

先のセクションで作成したuser01にログイン権限を与えるためにALTER ROLE user01 LOGINとコマンドを叩く。

postgresql-role

パスワードを設定するためにALTER ROLE user01 PASSWORD ‘1234’とコマンドを叩く。

postgresql-role

ロールuser01がテーブルsampleの内容をSELECT SQLコマンドで見るために、SELECTを許可する権限を与える。

postgresql-role

では、次にSELECT SQLコマンドでデータベースにアクセスしてみよう。

データベースにアクセスする

一度ログアウトし、今度はuser01でデータベースpostgresにログインする。

postgresql-role

データベースpostgresのテーブルsampleをSELECT SQLコマンドを使ってデータを表示する。

postgresql-role

データベースにアクセスするために必要な権限が与えられたので、テーブルのデータが表示されている。もし、権限が与えられていなければSELECTによるテーブルへのアクセスが拒否されることになる。

まとめ

このページではPostgreSQLのロールについて簡単にご紹介した。参考にしていただければと思う。

]]>
https://eng-entrance.com/postgresql-role/feed 1
【初心者向け】PostgreSQLの接続と切断を分かり易く解説 https://eng-entrance.com/postgresql-conect-disconect https://eng-entrance.com/postgresql-conect-disconect#comments Fri, 05 Jan 2018 10:15:21 +0000 https://eng-entrance.com/?p=6484 PostgreSQLのダウンロード及びinstallに引き続き、これから、PostgreSQLの接続と切断の方法を紹介する。

PostgreSQLへの接続と切断とは

PostgreSQLを利用するために行なう最初の操作がクライアントからPostgreSQLサーバへの接続だ。そして、操作の終了の操作が切断だ。ここでは、PostgreSQLの正式なクライアントアプリケーションSQL Shell(psql)を使ってサーバに接続する。psqlは対話型のターミナルだ。コマンドを入力すると、サーバからのレスポンスが表示される。

接続ためには、データベース名、ホスト名、ポート番号、ユーザ名を設定する必要がある。これらの値はデフォルトの値を使うこともできるし、パラメータとして指定することもできる。

コマンドの基本的な書き方は簡単だ。

$ psql [オプション] [データベース名]

では、実際の使い方を見てみよう。

PostgreSQLへ接続する

データベースを指定して接続する

あらかじめ作成しておいたデータベース(データベース名:sample)に接続する例だ。

データベースに接続するには名前を指定して、

$ psql sample

とコマンドを叩けばOKだ。

SQL Shellは「sample=#」とデータベース名に続いて「=#」を表示して、コマンドの入力待ちになるはずだ。

インストール直後に接続する

PostgreSQLインストール直後はまだデータベースが作成されていない。このため、データベース名を指定しないで接続する。

オプション-Uを使ってユーザ名:postgresだけを指定して、

$ psql -U postgres

とコマンドを叩けばOKだ。

 

「ユーザpostgresのパスワード:」と聞いてくるので、インストール時に設定したパスワードを入力する。パスワードを正しく入力すると、SQL Shellは「postgres=#」を表示して、コマンドの入力待ちになるはずだ。

オプション無しで接続する

データベースに接続ために必要な情報を指定する必要がある。しかし、毎回この値をオプションとして指定するのはわずらわしい時がある。こういう場合にあらかじめこれらの値を環境変数として設定しておくと手間が省ける。

「オプションと環境変数」のセクションで説明している環境変数をあらかじめ設定して、シンプルなコマンド入力で接続する例を見てみよう。

環境変数を指定していないと、オプション無しのコマンドでエラーになる。しかし、環境変数を指定することによって、

$ psql sample

とコマンドを叩くだけでOKだ。

 

では、切断する方法を見てみよう。

PostgreSQLから切断する

PostgreSQLの利用を終了するために、データベースからの切断の操作を行なう。

SQL Shellから、

# \q

とコマンドを叩けばOKだ。

SQL Shellから抜けて、元のDOSコマンドの入力待ちの表示になる。

オプションと環境変数

PostgreSQLサーバに接続ためは、データベース名、ホスト名、ポート番号、ユーザ名を設定する必要がある。これらの値は、SQL Shellのオプションか環境変数として設定することができる。

オプションと環境変数は次の通りだ。

オプション

環境変数

説明

-d

--dbname

PGDATABASE

データベースを指定する。

-h

--hostname

PGHOST

サーバがあるマシンのホスト名を指定する。

-p

--port

PGPORT

TCPポートかローカルUnixドメインソケットファイルの拡張子を指定する。

-U

--username

PGUSER

ユーザを指定する。

 

PGPASSWORD

パスワードを指定する。

まとめ

このページではPostgreSQLの接続と切断について簡単にご紹介した。参考にしていただければと思う。

]]>
https://eng-entrance.com/postgresql-conect-disconect/feed 2
【初心者向け】PostgreSQLのダウンロード及びインストール方法 https://eng-entrance.com/postgresql-download-install https://eng-entrance.com/postgresql-download-install#comments Sun, 24 Dec 2017 09:54:25 +0000 https://eng-entrance.com/?p=6448 PostgreSQLはオブジェクト関係データベースと呼ばれるデータベース管理システムのひとつだ。これから、そのPostgreSQLのダウンロード及びインストール方法を紹介する。

ダウンロード

まず行なうことは、PostgreSQLの公式サイト(URL: https://www.postgresql.org/)からインストーラーのダウンロードすることだ。

公式サイトのURLを開くと次の画面が表示される。

公式サイトが表示されたら、ページの上の方にある項目の中からDownloadを選択する。

Downloadsページが表示されたら、Windowsのリンクをクリックする。

Windows installersページが表示されたら、「Download the installer」リンクをクリックする。

Download PostgreSQL画面が表示されたら、Select your versionをクリックする。

プルダウン・メニューが表示されるので最新のバージョンを選ぶ。

選択したバージョン:PostgreSQL9.6.5とOS:Windows x86-64を確認して、DOWN LOAD NOWボタンを押す。これで、インストーラーのダウンロードが始まる。

ダウンロードが終われば、ダウンロード作業は完了だ。

インストール

ダウンロードが終わると、ダウンロード・フォルダーに最新バージョンのインストーラー(OSに応じてpostgresql-9.6.5-1-windows-x64.exe)が格納される。この記事を書いている時点では、最新バージョンは9.6.5だ。

ダウンロードされたインストーラーをダブルクリックすると、インストーラーが起動される。

「Setup – PostgreSQL Welcome to the PostgreSQL Setup Wizard.」画面が表示されたら、Nextボタンを押す。

Installation Directory画面が表示されたら、PostgreSQLをインストールするディレクトリをInstallation Directoryに設定する。デフォルトのディレクトリでもよいし、独自に設定することも可能だ。

設定が終わったらNextボタンを押す。

Data Directory画面が表示されたら、データベースのデータをインストールするディレクトリをData Directoryに設定する。デフォルトのディレクトリでもよいし、独自に設定することも可能だ。

設定が終わったらNextボタンを押す。

Password画面が表示されたら、データベースのスーパーユーザ(postgres)のためのパスワードを入力する。確認のためにPasswordに続いて同じPasswordをRetype passwordにも入力する。

入力が終わったらNextボタンを押す。

Port画面が表示されたら、サーバに接続するためのポート番号をPortに入力して選択する。ポート番号5432は、PostgreSQLのデフォルト・ポート番号だ。そのポート番号があらかじめ設定されている。ここでは、このポート番号を使うことにする。

入力が終わったらNextボタンを押す。

Advanced Optionが表示されたら、Locale(ロケール)をクリックしてメニュー・リストの中から推奨されているCを選択する。

ロケールとは、国際化に対応するために文字コード、通貨や時刻の書式設定などの情報を依存する国や地域ごとまとめて指定できるように定義したものだ。ここでは、文字の並べ替えなどで問題を起こさない設定Cを選んでいる。

ロケールにCを選んだら、Nextボタンを押す。

Ready to Install画面に「 Setup is now ready to begin installing PostgreSQL on your computer.」が表示されれば、これでインストーラーのための設定データの入力は全て完了だ。

もし入力データの間違いに気づいたら、ここまでならいつでもBackボタンを押すことによって、戻って修正することができる。

正しく入力できたらNextボタンを押す。

インストールの進捗を表す画面が表示される。

Setup画面に、メッセージ:「Completing the PostgreSQL Setup Wizard」が表示されればインストールは完了だ。最後にFinishボタンを押す。

PATHの設定

WindowsのDOS窓でPostgreSQLのSQL Shell(psql.exe)を起動するためにPATHを設定する必要がある。この手順について説明しよう。

コントロールパネル画面を開き、システムとセキュリティをクリックする。

システムとセキュリティ画面が開いたら、システムをクリックする。

システム画面が開いたら、システムの詳細設定をクリックする。

システムのプロパティ画面が開いたら、環境変数ボタンを押す。

環境変数画面が表示されたら、ユーザ環境変数の変数Pathを選択して編集ボタンを押す。

ユーザ変数の編集画面が表示される。変数値に既に設定されているパスの後に「;」を付けて、PostgreSQLをインストールしたディレクトリにある実行ファイル(.exe)が格納されているサブディレクトリ(\bin)を絶対パス名で追加する。ここでは、ディレクトリC:\Program Files\PostgreSQL\9.6\binを追加している。

入力が終わったら、OKボタンを押す。

環境変数の画面に戻るので、OKボタンを押す。これで、PATHの設定は終わりだ。

正しくPATHが設定されたことを確かめるために、DOS窓から

> psql --version

とコマンドを叩いて、バージョンが正しく表示されればOKだ。

これで、インストールは全て完了だ。

まとめ

このページではPostgreSQLのダウンロード及びインストールについて簡単にご紹介した。

今回、紹介したPostgreSQLの表示される画面と操作についても勉強していただきたい。

PostgreSQLのダウンロード及びインストールについて参考にしていただければと思う。

]]>
https://eng-entrance.com/postgresql-download-install/feed 4