PostgreSQL ここまでの作業の説明1



コマンド等々を説明したいと思います。

Ubuntu(Linux) の基本コマンドは黒字で説明します。コマンドは大量にありますが、実際使うコマンドは、ココに出てくるの+α程度でホント少ないです。

PostgreSQL 用のコマンド・管理プログラム等は全部青字で説明します。

SQL(データベースを操作する統一の命令書式。PostgreSQLだけでなく、MicrosoftAccess や、Oracle、MySQLなどでも共通して使える命令)は、緑色で説明します。

デー タベースを扱う上での用語の説明については、紫色で説明します。

コマンドや命令等 結局これは、何をしているの?
sudo 後に続くコマンドを管理者権限で実行するためのコマンドです。
sudoグループに属していないと使えません。

あるユーザーがsudoグループに属しているか調べるには、
 id コマンド
で調べられます。使い方:「id ユーザー名」
 実行表示例(id sun を実行した結果。sunは私が使っているユーザー名です。)
   uid=1000(sun) gid=1000(sun) groups=1000(sun),4(adm),24(cdrom),27(sudo),29(audio),30(dip),46(plugdev),109(lpadmin),110(sambashare)
 groups=以降が所属しているグループ一覧です。私の環境ではsunユーザーは、「sun、adm、cdrom、sudo、 audio、dip、plugdev、lpadmin、sambashare」のそれぞれのグループに属しています。
passwd 後ろに続くユーザーのパスワードを変更する命令です。

PostgreSQLのインストールの後の
 「 3  sudo passwd postgres  を実行する。(postgresユーザーのログインパスワードを設定する。
で使いました。

意味は、
 sudo(管理者権限)で postgresユーザー のパスワードを変更(passwd)する。
という意味になります。

PostgreSQLサービスを制御するための「管理コマンド」は、基本的に「postgres」ユーザーだけが使えるように設定されています。
 apt-get install postgresqlを実行
すると、PostgreSQLのプログラムのインストールと、同時に「postgres」ユーザー、「postgres」グループが生成されま す。

Ubuntuでは、ログインするには、パスワードが必要となっています。
これから、PostgreSQLの制御を管理コマンドを使って行っていくので、postgresユーザーでログインする必要があります。
しかし、 PostgreSQLのインストールでは、postgresユーザーやグループは生成されますが、パスワードの設定までは行われません。

そのため、passwdコマンドを使って、postgresユーザーにパスワードを設定しているわけです。

passwdコマンドは、管理者権限が必要です。そのためsudoを使ってpasswdコマンドを実行しているということです。
su ユーザーの変更命令です。
例えば、sample_userでログインしたが、ログアウトすることなく、一時的にtest_userでログインをしたい。と言った時に使うコ マンドです。

suの後ろの - ハイフンは、その後ろのユーザーがログインした時に「環境設定を使う」というオプションになります。
つまり、
 su - test_user → test_userでログインして、ログインにあわせてtest_user用の環境設定を適用する。(ただ し、元のユーザーの環境設定にはなんら影響を与えない。)
となります。 - を使わないと
 su test_user → test_userでログインするけど、設定等々はログイン済みのユーザーの環境設定を使います。
という効果になります。

ちなみに、
 exit
とやると、ログアウトできます。ログアウトすると、元のユーザーの環境設定に自動的に戻ります。

つまり、postgresのパスワードを設定後に、
    6 su - postgres  を実行する(su と - の間は、半角スペース、 - と postgresの間は、半角スペース。)(ログインユーザーをpostgres に変更する)
とやっているのは、postgresユーザーで一時的にログインしますよ。ログインにあわせてpostgresの環境設定を使ってくださいね。と いうことになります。

ちなみに、このあと(6のあと)使うpsqlという管理用プログラムをpostgresユーザーでない者で実行すると
      sun@SUN:~$ psql
      FATAL:  role "sun" does not exist
      psql: FATAL:  role "sun" does not exist
のように、sunって誰やねん?とデータベースに怒られアクセスできません。(※もちろん設定をすれば使えるようになります。)
そーゆーことなので、このあとpsqlを使いたいので、su - postgresでpostgresユーザーに一時的に変わってログインしているわけです。
psql これは、PostgreSQL専用の命令(プログラム)です。
PostgreSQLを操作するのでなければ、覚える必要のないコマンドです。

psqlは、PostgreSQLサービスに接続して、各種命令を発行できるプログラムです。
PostgreSQLをインストール直後の設定では、postgresユーザーでしか、psqlを使ってPostgreSQLサービスに接続 することはできません。

psql だ けでなく

 psql -U ユーザー名 -d データベース名 -n

と入力すると、指定したユーザー名で、指定したデータベースにアクセスできます。
-nは日本語使います!っていう宣言です。


ログインすると
   psql (9.3.5)

    Type "help" for help.
    postgres=#
のような文字が表示されます。
上からバージョン、helpと入力すればヘルプが見れますよ。となっています。最後の「postgres=#」 は、postgresデータベースに入っています。入力どぞ。という状態です。
ここで、
 コマンド命令(よく使うコマンドは個別にあとで説明します。)

 SQL命令(後で説明します。)
などを入力して実行します。

どんなコマンドがあるかを知りたいときは、
     =#
の後に、「\?」 と入力して実行するとコマンドの一覧を見ることができます。
よく使うコマンドは、
  \l       データベースの一覧を表示する
  \du      登録されているユーザー及びユーザーに与えられている権限の一覧を表示する
  \dt       現在入っているデータベース内に登録されているテーブルの一覧を表示する。
  \d テーブル名  指定したテーブルのフィールド設定の一覧を表示する。
  \q       psqlを終了する
などがあります。
データベース
テーブル
フィールド(項目)
PostgreSQLサービスの中には、
 1つ以上(たくさん)のデータベースを入れられます。
 さらにそのデータベースの中に、1つ以上(たくさん)のテーブルを入れられます。
 さらにそのテーブルの中に、1つ以上(たくさん)のフィールド(項目)を入れられます。
 さらに1つ以上(たくさん)のフィールド(項目)の中には「データ」を入れられます。

たとえば、
ある1つの「社員情報と書かれたダンボール」があります。
その中には、「社員名簿」と「社員個々の実績」などと題されたファイル簿冊があります。
「社員名簿」の中を開けてみると、表が綴ってあって、項目名で、名前・住所・生年月日と書かれています。
項目名の位置に合わせて、名前や住所や生年月日が羅列しているとします。

ここで、
 羅列された文字列が、実際のデータ
 羅列された文字列がどういう意味を持つのか理解するための項目にあたるのが「名前」「住所」「生年月日」であり、これがフィールド(項目)
 項目名とデータをセットにして1つ綴ってまとめた「社員名簿」ファイル簿冊が、テーブル
  「社員名簿」ファイル簿冊をしまっておくのに使っていたダンボールが、データベース
に当たります。(例題だと、「社員個々の実績」についても、同じようにテーブル、フィールド、データが綴られて、同じダンボールに入れら れていることになります。)

このように、今後、データベースにデータを登録していくには、
 1つのデータベース
 1つ以上のテーブル
 1つ以上のフィールド
を作成(定義)し、その定義にしたがって
 データ
を登録・参照・削除する。ことになります。
create user
SQL文で す。SQLとは、データベースに問い合わせや命令を行う際の命令の 書式のことです。
大文字小文字はどっちもでいいです。
主に、
 作成に使われる create 〜 命令
   create database 〜 データベースの作成
   create table   〜 テーブルの作成(及びフィールドの定義)
   create user   〜 ユーザーの作成
 削除に使われる drop 〜 命令
   drop database  〜 データベースの削除
   drop table    〜 テーブルの削除(及びフィールドもまとめて削除)
   drop user    〜 ユーザーの削除
 変更に使われる alter 〜 命令
   alter database 〜  データベース定義の変更
   alter table   〜 テーブル定義の変更(及びフィールドも変更可能)
   alter user    〜 ユーザーのパスワードやグループ等々の情報の変更
の3つが、定義として使われ(他にcreate View、drop View、alter viewも使うかな。viewは後ほど。)ます。
定義用のSQL以外にも他にもいっぱいありますが、それは後で説明します。

SQL文は、必ず最後の終わりに ; を入れます。
なので ; が来るまでは1つの文として解釈されます。

よって
    6 create user testuser;
の部分を解説すると
 ユーザーを作成しなさい。名前はtestuserです。
ということになります。ちなみに
     create
            user
     testuser;
という書き方もできます。
 ただし
    cre
      ate user
とか、createの単語が途中で改行されているとか、単語として成立していない書き方はダメです。

create database
create userの説明文を参考にしてください。

よって、
    8 create database testdb owner testuser;
の部分を解説すると
 データベースを作成しなさい、名前はtestdbです。このデータベースの所有者はtestuserです。
ということになります。ちなみに
     create database
         testdb
           owner testuser ;
という書き方もできます。
 ただし
    cre
      ate database
とか、createの単語が途中で改行されているとか、単語として成立していない書き方はダメです。
\l 9番目の処理で
    9 \l
やっているのは、ちゃんとユーザーが作成されて、データベースが作成できたかを確認するためです。

          Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
        -----------+----------+----------+-------------+-------------+-----------------------
        postgres  | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | 
        template0 | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres          +
            |      |    |      |     | postgres=CTc/postgres
       template1 | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres          +
            |      |    |      |     | postgres=CTc/postgres
       testdb     | testuser  | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 |


名前(Name)がtestdbというデータベースの所有者(Owner)がtestuserで登録ができていることが表示されています。
ちなみに、
 Encodingの項目がUTF8となっているのは、Unicodeという日本語が使える文字コードで作成されています。
 Collate、Ctypeは、UTF8を使って日本語の環境(ja_JP.UTF-8)に設定されている。ということになります。

\q
psqlを終了するためのコマンドです。

作業で
    10 \q  を実行する。(一度、psqlを終了します。)
のところで、一度終了している理由は、ユーザーとデータベースの作成ができたので、そのユーザー(testuser)で接続し直すためです。


作業1〜10番までは、結局のところ
 PostgreSQLサービスの管理をできるpostgresユーザーでログインする
 ユーザーを作成する
 データベースを作成する
という作業だったということです。

コマンド等々を覚えようとすると大変です。
たくさんの命令があるように見えますが、頻繁に使う命令は、どんどん絞られていきます。
頻繁に使う命令は頻繁に使うだけあって、嫌でも頭に入ります。
だから、覚えようと思うより、たくさん使って慣れましょう。

実際、システム開発・運用・保守の工程で
 ユーザーの作成 や データベースの作成
という作業は、システムの構築時くらいしかしません。
一度、構築してしまえば、後は
 データの登録 データの削除 データの更新
の作業しか、めったにしません。
つまり、create userやcreate databaseなどの命令は、たまーーーーにしか使わないということです。
なので、覚えるより、必要なときに
 PostgreSQL create user
などのキーワードでインターネットを検索すると書き方が出てきますので、必要になった時に参考にしてやりましょう。
つまり、覚える必要ないんですねw


それでは、
postgresユーザーで、psqlを実行して、好きな名前のユーザーを作成したり、ユーザーを削除したり、データベースを作成したり削除したりして見てくださ い。
そして、その途中で、\duでユーザーの一覧を見たり、\lでデータベースの一覧を見たりしてみてください。
余裕があれば、
 create user 〜
 create database 〜
の 〜 部分にはどんなことが書けるのか調べてみてください。「PostgreSQL create database」とかで検索するとでてきます。
※インターネットでcreate、drop、alterのSQL文を探すときは、キーワードにPostgreSQLもつけてください。
 実は、この3つの文は、データベースソフトの種類によって微妙に違う構文なのです。



ある程度、慣れたら次の工程を説明したいと思います。
inserted by FC2 system