17

psql による PostgreSQL サーバへのログイン・接続方法

最終更新日 投稿日 2020年03月26日

方法 1. プロンプト

-U, -d は省略して書けます。

psql
# パスワード

psql ユーザ名 データベース名
# パスワード

psql -U ユーザ名 -d データベース名
# パスワード

psql -h ホスト -p ポート ユーザ名 データベース名
# パスワード

psql -h ホスト -p ポート -U ユーザ名 -d データベース名
# パスワード


# 省略した場合
# ユーザ名:      ログインしている OS のユーザ名
# データベース名: ログインしている OS のユーザ名
# ホスト:        localhost, 127.0.0.1
# ポート:        5432

◯ ログアウト・切断方法

バックスラッシュ \q

\q

◯ パスワードを打つのが面倒な場合

環境変数 PGPASSWORD を使った、つぎのような書き方があるそうです。

PGPASSWORD=パスワード psql -U ユーザ名 データベース名

◯ パスワードを忘れた場合

対処法

Administrator 権限を持ったユーザ(正確にはロールというらしいですが)のパスワードを忘れた場合、pg_hba.conf を書き換えてパスワードを無効にできます。Windows 以外の場合は、以下のコマンドでファイルの場所を確認できます。

find / -name 'pg_hba.conf' 2>/dev/null

適宜 md5, peer から trust にします。詳細は、リンク先をご確認ください。

◯ 意見広告

2023年11月13日のマイナビ転職が運営するメディアの広告です。

img.jpg

  • ttps://meetscareer.tenshoku.mynavi.jp/entry/data_01/vo

上記の記事では

「どういうときに働きがいを感じるか」は「働きに見合う報酬が得られている」よりも「成長を感じる」ときである

と主張されています。

賃金が低くても転職してほしいという思いがあるのかどうかわからないのですが、そうした意図が透けて見えるようで嫌だなと思いました。Qiita の皆様にはこういうのにハマって欲しくないという思いのもと、以下に意見広告を記載させていただきます。

わたしは企業が労働者に明文化して提供できる価値は、「待遇」と「キャリア」の2つに大別できると個人的に思っています。

企業が労働者に提供できる価値

1. 待遇
1.1. 年収
1.2. 福利厚生
2. キャリア
2.1. 成長
2.1.1. 働きがい、やりがい

「キャリア」を提供できない企業は「待遇」が良くてもブラック企業です。

その上で記事を読んでいて怖いなと感じたのは次の 2 点です。

まず第一に「働きがい」は転職する判断基準において「キャリア」に従属する物であり、「待遇(年収)」と対等に比較することができないにも関わらず、あたかも「働きがい」と「待遇(年収)」が比較できかつ「働きがい」が「待遇(年収)」よりも優先事項が高いかのように記述されていることです。

また第二に「キャリア」を「成長」という下位の曖昧な言葉で濁していることです。どんなスキルだってやれば「成長」します。その「成長」が「キャリア」に寄与するかどうかは別問題です。この記事からわかる態度あるいは姿勢は「成長」という言葉で濁して「キャリア」の提供にコミットするということを回避していることです。「キャリア」に繋がらない「成長」や「働きがい」は、いわゆる「やりがい搾取」をするための道具として活用されていると私は思っています。

「待遇」と「キャリア(働きがい)」は一般に相関していているのではないでしょうか。

「待遇(年収)」を提供できない企業が「キャリア(働きがい)」を提供することは難しいことだと思っています。なぜならいわゆる「キャリア」を提供できる上流工程の企業あるいは社格の高い企業は収益も高く、必然的に「待遇(年収)」も良くなると思うからです。

そのことを考えると「キャリア(働きがい)」がいいから「待遇」は我慢しようと思っているときは、求職者は転職エージェントにのせられてしまっている可能性があるのではないかと思います。

「待遇」が「キャリア(働きがい)」に相関しない例を2つ示します。

まず第一に、今後成長するが今はまだ未成熟な産業の組織の場合です。2000年代 ~ 2010年代のウェブ業界のようにまだ成熟していない産業では必ずしも相関していないこともあります。市場が成長するかどうかを読み逆張りして行動することは我々一般人には非常に困難なことのように思います。

「成長できる」、「働きがいがある」という不明確な言葉、基準ではなく、市場の成長の有無を見据え「キャリア」という明確な言葉、基準で判断していくことが大事ではないかなと感じました。

また第二に、官公庁のように圧倒的に権力を握っている組織の場合です。

上記二例ともにレアケースであることには変わりないように感じます。

「やりがい」、「アットホームな職場」なんていまどき流行らないだろと思っていたのですが、こうやって隙あらばご丁寧に広告まで打って人の思考を染めようとしてくるのは本当に怖いこどだなと感じました。

方法 2. 環境変数

export PGUSER=ユーザ名
export PGPASSWORD=パスワード
export PGHOSTNAME=ホスト
export PGPORT=ポート
export PGDATABASE=データベース名

方法 3. パスワードファイル

◯ ファイルの書式

コロン : で区切ります。

ホスト:ポート:データベース名:ユーザ名:パスワード

◯ ファイルの場所

1. Windows の場合
  %APPDATA%\postgresql\pgpass.conf

2. それ以外 OS の場合
  ~/.pgfile

3. あるいは環境変数 PGPASSFILE でファイルパスを指定できます。

まとめ

PostgreSQL サーバへのログイン、接続する際にホスト名等を指定する方法は以下の4通りがあります。

項目 ホスト名 ポート番号 データベース名 ユーザ名 パスワード
デフォルト値 127.0.0.1 5432 OS のユーザ名 OS のユーザ名 -
プロンプト -h, --host -p, --port -d, --dbname -U, --username -
環境変数 PGHOST PGPORT PGDATABASE PGUSER PGPASSWORD
パスワードファイル 1 2 3 4 5

値が指定されなかった場合、デフォルトの値が適用されます。プロンプト、パスワードファイル、環境変数でそれぞれ別の値を指定した場合、どの値が優先されるのかは調べてないので分かりません。

psql ってなんだ?

以下の2つがポイントかなと思いました。

  1. psql クライアントと PostgreSQL サーバを区別する
  2. psql クライアントと psql コマンドを区別する

psql クライアントは PostgreSQL サーバを操作するための対話端末 interactive terminal です。psql クライアンはそれ1つでアプリとして動作します。

psql - PostgreSQL interactive terminal

psql クライアントは、自分のパソコンのなかで動いている PostgreSQL サーバだけではなく、ネットワーク上にいるほかのパソコンで動いている PostgreSQL サーバも操作できます。これは psql コマンドでホスト名やポート番号を指定できることからもわかります。

そして psql クライアントは psql コマンドで起動することができます。psql はクライアントです。データベースが動いているサーバとは違うものです。ややこしいのですがサーバとクライアントを区別すると良いような気がします。

以下のリンクの中で "PostgreSQL Client Applications" の一覧の中に psql コマンドがあるのがわかります。つまり psql はクライアントということです。

PostgreSQL Client Applications - PostgreSQL: Documentation

自分は サーバとクライアントが別物であると言う意識が希薄になっていました。これは psql コマンドが、なにも指定しないとフォールバックされて自動的にローカル 127.0.0.1 のサーバに接続されるからです。

新規登録して、もっと便利にQiitaを使ってみよう

  1. あなたにマッチした記事をお届けします
  2. 便利な情報をあとで効率的に読み返せます
ログインすると使える機能について

コメント

この記事にコメントはありません。
あなたもコメントしてみませんか :)
新規登録
すでにアカウントを持っている方はログイン
17

Qiitaにログインしてダークテーマを使ってみませんか?🌙

ログインするとOSの設定にあわせたテーマカラーを使用できます!