カテゴリー
コンピューター

【PostgreSQL】ログイン時にパスワードも同時に渡して認証を通すコマンドの書き方

MySQL では接続コマンドと同時にパスワードを渡してログインすることが可能です。mysql -u root -ppassword という書き方ですわね。

PostgreSQL ではどうかしら?ヘルプを見てみましても、存在しません。調べてみたところ、簡単に書ける方法がございましたので、メモいたします。

接続コマンドと同時にパスワードを渡す psql の書き方

# mysql -u root -ppassword のように 1 行で PostgreSQL にログイン
PGPASSWORD=password psql -U postgres

# おまけ。ヒアドキュメントを使って、スーパーユーザ (postgres) にパスワード設定
su - postgres <<EOT
psql -U postgres
Alter USER postgres encrypted password 'vagrant';
\q
exit
EOT

# ヒアドキュメントを使って、DB 作成
PGPASSWORD=password psql -U postgres <<EOT
CREATE USER user1 WITH NOSUPERUSER NOCREATEDB NOCREATEROLE PASSWORD 'password1';
CREATE DATABASE db1 WITH OWNER user1 ENCODING 'UTF8';
EOT
カテゴリー
Linux

PostgreSQL のデータベースを別サーバへコピーする方法メモ♪

データベースを同じサーバの PostgreSQL へコピーするコマンド

-- データベースをコピー。db1(user1、password1) から db2(user2、password2)に
-- pg_dump -U user1 -W db1 | psql -U user2 -W db2 とすると
-- 「ERROR:  ロール"user1"のメンバでなければなりません」や
-- 「WARNING:  "public"の権限を取り上げられませんでした」の
-- メッセージが出るため、スーパーユーザーで実行することで回避
pg_dump -U postgres -W db1 | psql -U postgres -W db2

データベースを別のサーバの PostgreSQL へコピーするコマンド

データベースのコピーのコマンドの前に、次の内容のパスワードファイルを作成しておく必要があります。

  • コピー元サーバで、pg_dump を実行するユーザのホームディレクトリに .pgpass ファイルを作成する
  • コピー先サーバで、psql を実行するユーザのホームディレクトリに .pgpass ファイルを作成する
# hostname:port:database:username:password
localhost:5432:*:postgres:postgrespassword

実際の別サーバへのコピーは次のコマンドで行います。

-- 別サーバに PostgreSQL データベースをコピー。db1(user1、password1) から hostname サーバ(ユーザ名 hostuser)の db2(user2、password2)に
-- ただし、事前にパスワードファイルの設定が必要
pg_dump -U postgres db1 | ssh hostuser@hostname psql -U postgres db2
カテゴリー
Linux

PostgreSQL のデータベースをコピーする方法メモ♪

PostgreSQL データベースをコピー

-- データベースをコピー。db1(user1、password1) から db2(user2、password2)に。
pg_dump -U postgres -W db1 | psql -U postgres -W db2
  • psql のプロンプトや postgres ユーザでのコマンドではなく、シェルで実行する。
  • コピー先のデータベースは予め作っておくこと。
  • PostgreSQL のユーザは postgres を使用する。
  • パイプ(|)前後の2回分、パスワードの入力が求められる。

指定するユーザについてポイント

カテゴリー
Linux

【改善】PostgreSQL 最初の一歩!ユーザと DB 作成!確認!【おれはやった!】

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

  1. PostgreSQL スーパーユーザー postgres にパスワード postgrespass 設定
  2. PostgreSQL 内にユーザ testuser 作成
  3. PostgreSQL 内のユーザ testuser 用のデータベース testdb 作成、そしてパスワード testpass 設定
  4. データベース testdb、PostgreSQL ユーザ testuser、Linux ユーザ testuser の削除

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

なお、バージョンは現時点(2013年4月3日)で最新の 9.2 をインストールしました。ですのでコマンドが「postgresql」ではなく、「postgresql-9.2」となっております。

0−1.はじめに。PostgreSQL 初期化と起動