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)で接続し直すためです。 |