LoginSignup
4
1

More than 3 years have passed since last update.

PostgreSQL suとsudoの違いについて

Posted at

はじめに

エンジニアになり、LinuxやPostgreSQLに触れることになりましたので、記録として学んだことを残そうと思います。
環境は、CentOS7.2です。PostgreSQLを使用します。

postgresユーザーとpsqlコマンド

DBを操作するためには、psqlコマンドを使用します。
psqlコマンドとは、ターミナルからDBを操作するためのコマンドです。
しかしどのユーザーでもこのコマンドを使用できるわけではありません。(設定を変更すれば可能なようです。)
DBを操作する際は、rootユーザーや一般ユーザーではなく、postgresユーザーに切り替えて(あるいはpsqlコマンドが使用できるユーザーに切り替えて)psqkコマンドを実行し、DBを操作することになります。
そのユーザーの切り替え時に使用するのがsuコマンドとsudoコマンドになります。

suコマンドについて

suコマンドはsubstitute userとか、super userとか、switch userとか。調べましたが何の略なのか分かりませんでした。
ユーザーを切り替えるという意味です。

su - postgres

postgresユーザーに切り替えています。

ハイフンの有無については、

「-」の有無に注意してください。「-」があると、直接ログインしたときと同様に環境が初期化されます。
つまり、カレントディレクトリは新しいユーザーのホームディレクトリとなり、環境変数もすべて初期化されます。
「-」がなければ、現在の環境をそのままにしてユーザーだけを切り替えます。(中島能和「LinuC教科書 LinuCレベル1 Version10.0対応」p425)

ということのようです。

su -
パスワード:

ユーザー名を省略すると、rootユーザーへの切り替えが行われ、パスワードを求められます。

su - postgres
#ユーザーをpostgresへ切り替えて
psql test
#psqlコマンドでtestサーバーへアクセスします
¥d
#¥マーク(あるいはバックスラッシュ)dとすることで、testサーバー内にある、テーブルを一覧表示できます
¥d table
#また、¥dの後ろにテーブル名を入力することで、そのテーブルにあるカラムを一覧表示できます

suコマンドでpostgresユーザーに切り替えた後、psqlコマンドで対象のサーバーを指定したら、
SELECT~等のSQL文を書いていくことになります。
ユーザーを切り替えるとそのままですので、ctrl + d で元のユーザーに戻ることができます。

sudoコマンドについて

sudoコマンドの場合ですと、sudoから続けて一行でSQL文まで書くことができます。

sudo -u postgres psql table -c "SELECT~";

sudoコマンドからuオプションでpostgresユーザー切り替え、psqlコマンドからtableというDBを指定し、
続けてコマンドを打つのでcオプション、ダブルクォーテーションで囲んでSQL文が入力できます。

sudo -u postgres psql table -f /var/test.sql

また、SQL文をファイルにまとめている場合、cオプションをfオプションに変えることで実行できます。
上記の場合ですと、/var 配下にあるtest.sqlファイルを実行しています。

ただ、sudoコマンドは毎回ユーザーを切り替えてSQL文を書かなくてはならないので、
suコマンドで一度切り替えてしまった方が、何回もSQL文を書く場合には良いかもしれません。

まとめ

postgresユーザーに切り替えるための、suとsudoの違いについて記載しました。
もっと奥が深いかと思いますが、これから学習していきます。

4
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1