Locked History Actions

Diff for "postgresql"

Differences between revisions 2 and 3
Deletions are marked like this. Additions are marked like this.
Line 80: Line 80:

=== pg_hba.confの設定 ===

Linux(Redhat系のみ?)では、/var/lib/pgsql/data/pg_hba.confにある。
ここでアクセス制御が行われており、拒否された場合には
{{{
 IDENT authentication failed for user
}}}
というエラーが発生する。デフォルトでは
{{{
local all all ident sameuser
}}}
となっているが、これでは厳しすぎるので以下のように、ローカルな接続の場合はすべてを許すようにする。
{{{
local all all trust
host all all 127.0.0.1 255.255.255.255 trust
}}}

PostgreSQL

極めて簡単な使い方

以下はLinuxを対象とし、既に他人が構築した何らかのデータベースが存在し、それに対して操作を行うことを目的とする。

スーパユーザになる

PostgreSQLがインストールされた時点でLinux上のpostgresというアカウントが作成されている。これは、PostgreSQLデータベースに対するどのようなことでも可能なスーパーユーザである。 作成された時点ではパスワードは設定されておらず(/etc/shadowのパスワード欄は「!!」)、root以外のユーザはpostgresになることはできない。この状態でよいのであれば、postgresのパスワードを設定する必要はない。

※Linux上のアカウントがスーパーユーザであるという点はFirebirdとは異なる。FirebirdのsysdbaはLinux上アカウントではなく、Firebird自体が管理しているアカウント。

rootからは以下のようにしてpostgresユーザになる。

su - postgres

※ハイフンは前のユーザ(root)の環境を引き継がないという意味。

以下の操作はpostgresユーザであることを前提とする。

データベース一覧を表示する

psqlを使ってデータベース一覧を表示する。psqlには、コマンド投入後何かを行ったあとすぐにLinuxプロンプトに戻るモードと、対話的なモードとがあるが、以下ではデータベース一覧を表示して、すぐにLinuxシェルに戻る。

psql -l

データベースをバックアップする

既に存在するデータベースをバックアップする。以下の方法はデータベースが稼動中でも正しく行われる。

pg_dump データベース名 > バックアップファイル

バックアップ先ファイルにはテキスト形式で書き込まれている。なお、スキーマだけをバックアップするのは以下

pg_dump -s データベース名 > バックアップファイル

データベースをリストアする

データベースをリストアするには、最初に空のデータベースを作成し、次にバックアップファイルを読み込ませる必要がある。

createdb -T template0 データベース名
psql  データベース名 < バックアップファイル

データベース作成時に指定するテンプレートとしてはtemplate0, template1がある。通常はtemplate0で良い模様。

ユーザを作成する

postgres以外のユーザを作成しておく、これは別にLinuxのユーザである必要はない(その必要があると記述のある資料も見つかるが。。)。

createuser ユーザ名

このとき以下のようなメッセージが表示される。

Shall the new user be allowed to create databases? (y/n)
Shall the new user be allowed to createmore new users? (y/n)

データベースに対する操作

一つのデータベースに対する操作を行うには、psqlにデータベース名を指定して対話モードで使う。

psql データベース名

これ以降プロンプトは「データベース名=#」となる。ここで様々なコマンドを投入することができる。

  • psqlを抜ける

\q
  • データベースのユーザ一覧

select usename from pg_user

pg_hba.confの設定

Linux(Redhat系のみ?)では、/var/lib/pgsql/data/pg_hba.confにある。 ここでアクセス制御が行われており、拒否された場合には

 IDENT authentication failed for user

というエラーが発生する。デフォルトでは

local all all ident sameuser

となっているが、これでは厳しすぎるので以下のように、ローカルな接続の場合はすべてを許すようにする。

local all all trust
host all all 127.0.0.1 255.255.255.255 trust