カテゴリー
Linux

【不満】PostgreSQL 最初の一歩!ユーザと DB 作成!確認!【CentOS 5.9】【実際ニュービー】

yum でインストール直後の PostgreSQL 最初の一歩として、

  • PostgreSQL スーパーユーザー postgres にパスワード設定
  • PostgreSQL 内のユーザ testuser 作成
  • PostgreSQL 用の Linux ユーザ testuser 作成
  • PostgreSQL 内のユーザ testuser 用のデータベース testdb 作成
  • データベース testdb、PostgreSQL ユーザ testuser、Linux ユーザ testuser の削除

をやってみようと思います。

PostgreSQL のプロンプトにログイン

[root@localhost ~]# PostgreSQL インストールで自動で作成された PostgreSQL のスーパーユーザー postgres に変更
[root@localhost ~]# su - postgres
-bash-3.2$ PostgreSQL のプロンプトへ接続(インストール時はパスワードが不要)
-bash-3.2$ psql
psql (9.2.3)
"help" でヘルプを表示します.

postgres=#

ユーザーへのパスワード設定

postgres=# # スーパーユーザー postgres にパスワード設定
postgres=# ALTER USER postgres WITH PASSWORD 'kokoni_password';
ALTER ROLE
postgres=#

確認しようと一旦ログアウトして、「su – postgres」→「psql」と進みましても、パスワードの入力を求められませんでした。。。ナンデ?><

新しく PostgreSQL のユーザ作成、パスワード設定

-bash-3.2$ # 新しく PostgreSQL のユーザを作成し、パスワードを設定
-bash-3.2$ # -d データベース作成を許可
-bash-3.2$ # -P パスワードを設定
-bash-3.2$ createuser -d -P testuser
新しいロールのためのパスワード: 
もう一度入力してください:
-bash-3.2$ exit
logout
[root@localhost ~]# useradd testuser
[root@localhost ~]#

「psql」でプロンプトに接続し、「¥du」でユーザが作成されとことと「select usename,passwd from pg_shadow;」でパスワードが設定されていることが確認できました。 それにしても、PostgreSQL のユーザ以外に、同名で Linux のユーザも作成する必要があるのが面倒です。何とかならないものでしょうか。。。

新しく作った PostgreSQL ユーザ用のデータベースを作成

[root@localhost ~]# testuser ユーザ用の PostgreSQL のデータベース作成
[root@localhost ~]# su - testuser
[testuser@localhost ~]$ createdb testdb
[testuser@localhost ~]$ # testuser ユーザで testdb に接続
[testuser@localhost ~]$ psql testdb
psql (9.2.3)
"help" でヘルプを表示します.

testdb=>

データベース作成には、Linux ユーザを変更する必要がありました。

作成後、そのデータベースへ接続してみました。 これも、面倒です。Linux で PostgreSQL 用のユーザに変更してからそのユーザ用に PostgreSQL のデータベースを作る感覚が馴染めません。今まで MySQL では、MySQL にログインしてから MySQL 用のユーザを作り、データベースを作り、、、と全て MySQL 内で完結していましたのに、PostgreSQL では Linux と混じっているのがどうにもヘンな気持ちです。

データベース削除、PostgreSQL ユーザ削除、Linux ユーザ削除

[testuser@localhost ~]$ # PostgreSQL データベース削除
[testuser@localhost ~]$ dropdb testdb
[testuser@localhost ~]$
[testuser@localhost ~]$ # PostgreSQL ユーザ削除 
[testuser@localhost ~]$ exit
logout

[root@localhost ~]# su - postgres
-bash-3.2$ dropuser testuser
-bash-3.2$
-bash-3.2$ exit
logout
[root@localhost ~]# # Linux ユーザ削除
[root@localhost ~]# userdel -r testuser
[root@localhost ~]#

やはり PostgreSQL ユーザと Linux ユーザの2つ削除しなければならないのが面倒です。

ユーザ一覧、ユーザパスワード設定、データベース一覧の確認コマンド

postgres-# # ユーザ一覧の確認
postgres-# \du
                                         ロール一覧
 ロール名 |                                 属性                                 | メンバー 
----------+----------------------------------------------------------------------+----------
 postgres | スーパーユーザ, ロールを作成できる, DBを作成できる, レプリケーション | {}
 testuser | DBを作成できる                                                       | {}

postgres-#
postgres-# # ユーザパスワード設定の確認
postgres=# select usename,passwd from pg_shadow;
 usename  |               passwd                
----------+-------------------------------------
 postgres | md52356ad72626bd0f77e9dab55f1423abd
 testuser | md599e5ea7a6f7c3269995cba3927fd0093
(2 行)

postgres=# \q
-bash-3.2$ # データベース一覧を確認
-bash-3.2$ psql -l
                                         データベース一覧
   名前    |  所有者  | エンコーディング |  照合順序   | Ctype(変換演算子) |      アクセス権       
-----------+----------+------------------+-------------+-------------------+-----------------------
 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       | 
(4 行)

-bash-3.2$

今まで試してきたものと時系列は前後しますけれども、一覧を確認するコマンドです。それぞれ作成、削除の前後でしっかり確認したいものですね♪

おわりに

本投稿は、次の投稿の続きに位置しております。

やってみて感じたことを述べます。コマンド自体にむずかしいところはないのですけれども、考え方が難しいです。つまり、Linux ユーザを作成しておいて、それと同名で PostgreSQL ユーザを作成する考え方がわかりません。PostgreSQL のユーザ数だけ Linux ユーザも作成しなければならないのは、とても面倒です。

なぜ?Linux ユーザを作成しないで済む方法はないものでしょうか?

次は PHP と PostgreSQL との連携と考えておりますが、その前に Linux ユーザを作成しない方法はないか探していそうな気がします。

それはともかく、参考にさせていただいたページです!ありがとうございます!

以上です。

「【不満】PostgreSQL 最初の一歩!ユーザと DB 作成!確認!【CentOS 5.9】【実際ニュービー】」への2件の返信

コメントを残す