PostgreSQLのインストール その1
関連記事:
yumコマンド
PostgreSQLのコマンドラインクライアントpsql
インストール
PHP 5.3.3 のインストールを参考に、パッケージグループでインストールしてみた。
まず、パッケージグループを調べる。
# yum -v grouplist | grep postgres PostgreSQL データベースサーバー (postgresql) PostgreSQL データベース接続クライアント (postgresql-client) # yum groupinfo postgresql 読み込んだプラグイン:downloadonly, fastestmirror, refresh-packagekit グループ処理の設定をしています Loading mirror speeds from cached hostfile * base: www.ftp.ne.jp * extras: www.ftp.ne.jp * updates: www.ftp.ne.jp グループ: PostgreSQL データベースサーバー 説明: PostgreSQL データベースサーバーと関連パッケージ 強制的なパッケージ: postgresql-server 標準パッケージ: postgresql-docs オプション パッケージ: postgresql-contrib postgresql-plperl postgresql-plpython postgresql-pltcl postgresql-test rhdb-utils
とりあえずサーバの方のパッケージグループをインストール。
# yum -y groupinstall postgresql <中略> 依存性を解決しました ================================================================================ パッケージ アーキテクチャ バージョン リポジトリー 容量 ================================================================================ インストールしています: postgresql-docs x86_64 8.4.20-1.el6_5 base 6.9 M postgresql-server x86_64 8.4.20-1.el6_5 base 3.4 M 依存性関連でのインストールをします。: postgresql x86_64 8.4.20-1.el6_5 base 2.6 M postgresql-libs x86_64 8.4.20-1.el6_5 base 201 k <中略> インストール: postgresql-docs.x86_64 0:8.4.20-1.el6_5 postgresql-server.x86_64 0:8.4.20-1.el6_5 依存性関連をインストールしました: postgresql.x86_64 0:8.4.20-1.el6_5 postgresql-libs.x86_64 0:8.4.20-1.el6_5 完了しました! # id postgres uid=26(postgres) gid=26(postgres) 所属グループ=26(postgres) # which psql /usr/bin/psql
依存関係からサーバだけでなくクライアント(psql)もインストールされた。
また、postgres というユーザとグループが作成されていた。
サービスの起動
参考ページの「3. PostgreSQL を使ってみる」をやってみた。
まず、Linuxのアカウントを新たに1つ作る。
#意味は考えずに、とりあえず作った。
# useradd pguser
次にサービスを起動しようとしたが、失敗。
# service postgresql start /var/lib/pgsql/data is missing. Use "service postgresql initdb" to initialize the cluster first. [失敗]
エラーメッセージの中に書かれている "service postgresql initdb" を実行してみる。すると、空だった /var/lib/pgsql/data/ ディレクトリの中に設定ファイルなどができていた。
そしてサービスの起動を試みると、今度は成功。
# service postgresql initdb データベースを初期化中: [ OK ] # ls /var/lib/pgsql/ backups data pgstartup.log # ls /var/lib/pgsql/data/ PG_VERSION pg_clog pg_log pg_subtrans pg_xlog base pg_hba.conf pg_multixact pg_tblspc postgresql.conf global pg_ident.conf pg_stat_tmp pg_twophase # cat /var/lib/pgsql/data/PG_VERSION 8.4 # service postgresql start postgresql サービスを開始中: [ OK ]
ロールとDBの作成
Linuxのアカウントを postgres に切り替えて、"psql -l" でDBを確認。初期状態で postgres, template0, template1 の3つのDBがある。
エンコーディングはデフォルトでUTF-8なんだな。SJISじゃなくてよかった。
# su - postgres $ 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 (3 行)
createuserコマンドでPostgreSQLのロールを作成する。ロールとはユーザーだと思えばいいらしい。
ロールの名前は先ほど作ったLinuxのアカウントと同じ pguser として、データベース作成権限を付与。
$ createuser pguser 新しいロールをスーパーユーザとしますか? (y/n)n 新しいロールにデータベース作成権限を与えますか? (y/n)y 新しいロールにロールを作成する権限を与えますか? (y/n)n
Linuxのアカウントを pguser に切り替えて、createdbコマンドでDBを新規作成。アカウントを切り替えるのはDBの所有者を pguser にするため。
"psql -l" でDBを確認すると、所有者が pguser の新しいDB mydb ができていた。
$ exit logout # su - pguser $ createdb mydb $ psql -l データベース一覧 名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権 -----------+----------+------------------+-------------+-------------------+----------------------- mydb | pguser | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | 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 (4 行)
pguserのままで psql から mydb に接続できた。アカウントが postgres でも接続できたが、root できなかった。
$ psql mydb psql (8.4.20) "help" でヘルプを表示します. mydb=> \du ロール一覧 ロール名 | 属性 | メンバー ----------+--------------------+---------- pguser | DBを作成できる | {} postgres | スーパーユーザ | {} : ロールを作成できる : DBを作成できる
今回、ロールを作る前に同じ名前のユーザーアカウントをLinuxに作った。こういうのをIdent認証というらしい。
Linuxのアカウントと関係なくロールを作る方法もあると思うので、いずれ調べたい。
ログファイルの設定
ログファイルはデフォルトで /var/lib/pgsql/data/pg_log ディレクトリに
postgresql-<3文字の曜日>.log
という形式のファイル名に記録される。曜日はPostgreSQLを起動した曜日。また、ログの内容にその事象が発生した日時が記載されない。
#ファイル名といい日時が記載されないことといい、変なデフォルト設定だな。
日時はあったほうが良さそうなので、postgresql.conf を修正。
log_line_prefix という項目が # でコメントアウトされているので、# を削除し、下記のように書き換えた。
それから"service postgresql reload" で設定を再読み込みすると、ログに日時が記録されるようになる。
log_line_prefix = '%t %d[%p-%l]'
« .htaccessの有効化とサブディレクトリのアクセス制御 | Main | PostgreSQLのインストール その2 »
「Linux」カテゴリの記事
- Laravel4のインストール(2015.05.06)
- CakePHPのインストール(2015.06.14)
- PHPからPDOでPostgreSQLに接続する(2015.06.09)
- yumコマンド(2014.11.17)
- [CentOS 6.6]PHP5.5のインストール(2015.02.22)
「PostgreSQL」カテゴリの記事
- CakePHPのインストール(2015.06.14)
- PHPからPDOでPostgreSQLに接続する(2015.06.09)
- PostgreSQLのインストール その2(2015.03.29)
- PostgreSQLのインストール その1(2015.03.23)
- 列の値を使って日時に「+n日」する(2015.02.04)
TrackBack
TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/61327530
Listed below are links to weblogs that reference PostgreSQLのインストール その1:
« .htaccessの有効化とサブディレクトリのアクセス制御 | Main | PostgreSQLのインストール その2 »
Comments