CentOS6にpostgreSQLを導入して使えるようにするまで

スポンサーリンク

postgresqlを導入する

postgresqlをインストールする環境

windows上に構築した仮想マシン centos にpostgresqlを導入していきます。

今回導入したCentOSのバージョンは次のとおりです。

$ cat /etc/redhat-release
CentOS release 6.10 (Final)

postgresqlをインストールする

では、さっそくCentOS7にPostgreSQLを導入してみましょう。
まずはPostgreSQLが導入されているか確認します。

$ rpm -qa | grep postgres

もしPostgreSQLが存在していたら、次のコマンドで削除しておきます。

$ sudo yum -y remove postgresql

下記公式サイトから最新版のPostgreSQLのURLを取得。今回はPostgreSQL11を選択しました。
PostgreSQL RPM Repository (with Yum)
screenshot

次のURLが取得できました。

https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-6-x86_64/pgdg-centos11-11-2.noarch.rpm

よくわからないけど以下のようにします。以下はリポジトリを追加しているそうです。リポジトリの意味を調べてみたけどよくわかりませんでした気にしません。

$ sudo rpm -iUvh https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-6-x86_64/pgdg-centos11-11-2.noarch.rpm

またもやよくからないけど以下のようにします。

$ sudo vi /etc/yum.repos.d/pgdg-11-centos.repo
[pgdg95]
...省略...
enabled=1
↓
enabled=0

明示的にリポジトリを追加するためにやるそうです。よくわかないですが気にしません。viはvimのことです。編集した結果以下のようになりました。

[pgdg11]
name=PostgreSQL 11 $releasever - $basearch
baseurl=https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-$releasever-$basearch
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG-11

ここでやっとインストールできます。今回はバージョン11なので l と 1があってわかりにくいです。

$ sudo yum -y install --enablerepo=pgdg11 postgresql11-server postgresql11-devel postgresql11-contrib

インストールできたらバージョンを確認します。

$ psql --version
psql (PostgreSQL) 11.0

ここまでネットの情報だけみてやりましたが、なにもトラブルはなくインストールできました。

スポンサーリンク

postgresqlを使える状態にする

状態の確認

『postgres』というアカウント が作成されていることを、「id」コマンドで確認します

$ id postgres
uid=26(postgres) gid=26(postgres) 所属グループ=26(postgres)

「/usr/」にインストールされ、さまざまなファイルができていることを確認します。たとえば、以下のようにコマンドが存在するかを見てみます。

$ which psql
/usr/bin/psql

サービスに登録されていることを確認します。「/etc/init.d/」に「postgresql」という PostgreSQL の起動・停止を行なうスクリプトが追加されています。

$ ls /etc/init.d/

postgresql サービスの確認

postgresqlの起動

ルートじゃないと起動できないのでsudoを使います。なぜかpostgresql-11としないと起動できないけど一応これで起動できた↓

$sudo service postgresql-11 start
postgresql-11 サービスを開始中:                            [  OK  ]

停止するにはstop

$sudo service postgresql-11 stop
postgresql-11 サービスを停止中:                            [  OK  ]

はじめて起動したデータベースの初期化が行われるらしい。

初めて起動したときは、「データベースクラスタの初期化(initdb)」 が行なわれます。これは、データベースを使うために必要なディレクトリ構成を作る処理で、「/var/lib/pgsql/data/」に作成されます。
CentOS で PostgreSQL を使ってみよう!(2) | Let’s Postgres

初期のデータベースを表示

postgresユーザーになって初期のデータベースを表示します。postgresユーザーは初期の状態だとパスワードが設定されておらずログインすることができないので、sudoでpostgresユーザーにログインします。psql -lでデータベースを表示することができます。

[vagrant@localhost ~]$ sudo su - postgres
-bash-4.1$ 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          +
           |          |                  |             |                   | pos
tgres=CTc/postgres
 template1 | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/
postgres          +
           |          |                  |             |                   | pos
tgres=CTc/postgres

postgresqlの初期設定

PostgreSQLを導入すると、CentOS上に「postgres」ユーザーが自動で追加されます。また、データベース「postgres」、データベース接続ユーザー「postgres」も自動で作成されます。まずはpostgresユーザーのパスワードを設置します。なおインストール時に作成される postgres ユーザ(OS側)はパスワードが設定されていません。なのでpostgresユーザーのパスワードを設定します。

CentOSの管理者権限であればpostgresユーザーになれるのですがパスワードを設定しておいたほうがあとあと楽そうです。

$ sudo passwd postgres
ユーザー postgres のパスワードを変更。
新しいパスワード:
よくないパスワード: 辞書の単語に基づいています
よくないパスワード: 簡単すぎます
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。

これでpostgresユーザーのパスワードを作成できたので、postgresユーザーにログインします。パスワードが求められるので先ほど作成したパスワードを入力してログインしています。

$ su - postgres
パスワード:
-bash-4.1$

postgresユーザーは次のコマンドでPostgreSQLのシェルに入ることができます

-bash-4.1$ psql
psql (11.0)
"help" でヘルプを表示します。

postgres=#

シェルから抜けるには \q コマンドを使います

postgres=# \q
-bash-4.1$

とりあえずこれで学習の準備はできました。

あとはドットインストールなりをみて勉強すればいいと思います。

postgresqlはこのほかにもかなり情報があるけどとりあえずこのくらいにしておこうと思います。下に今後関係してきそうなもを書いておきました。postgresqlは認証方法の問題でエラーがでることがあるのですが、上記のとおりにやっていけばこの問題で悩ませれることはありません。

peer認証

PostgreSQLではデフォルトの認証方式としてPeer認証が設定されています。Peer認証とは、カーネルからクライアント上のシステムユーザ名を取得し、PostgreSQLデータベースユーザと同一である場合のみ接続が許可される仕組みです。PostgreSQLでは、デフォルトではpostgresデータベースユーザしか存在しないため、UnixユーザもPostgreSQLをパッケージインストールすると作成されているpostgresである必要があります(su – postgresしないとダメということ)。

perr認証の変更を行うには次のファイルを編集します。/var/lib/pgsql/11/data/pg_hba.conf

md5認証

パスワード認証に変更するには auth-method を peer から md5 にすればよいただし, これを最初にやってしまうと postgresユーザ(データベース側)のパスワードは設定されていないため, ログインできない(パスワードがNULLなのでパスワード認証が必ず失敗する)

コメント

タイトルとURLをコピーしました