#■前提
初めてコマンドプロンプトからPostgreSQLを使用する時用の説明になります。
前提としては、以下の通りです。
OS:Windows10
PostgreSQL:バージョン:9.6.1
PostgreSQL
ユーザー:postgres(デフォルトユーザー)
パスワード:test(インストール時に設定したパスワード)
Pathを通して、
コマンドプロンプトから
・ログイン
・SQLを発行して
・ログアウト
の一通りの基本的な操作を行います。
使用するユーザーはデフォルトのスーパーユーザーです。
初めから用意されているユーザーなので特別な準備は必要ありません。
対象は新人さんを想定して書いています。
不足や誤りなどあればコメントいただければ幸いです。
#■Pathを通す
PostgreSQLのインストール先はだいたい同じような場所にあるかと思います。
確認してPostgreSQLのフォルダの対象バージョンのbinをパスに追加します。
(psql.exeが入っているフォルダです)
私のPCでは以下のようになっていました。
C:\Program Files\PostgreSQL\9.6\bin
システム -> システムの詳細設定 -> 環境変数
変数Pathをダブルクリックして追加
(新規ボタンを押下し、PostgreSQLのbinのフォルダの場所を入力する)
OKを押下してPathが通ります。
#■コマンドプロンプトからの操作
##・パスが通っているかを確認する
(※Pathを通す前にコマンドプロンプトを立ち上げている場合一度コマンドプロンプトを再起動する)
psql -V
psql (PostgreSQL) 9.6.1
バージョンが出れば成功。
(出ない場合はパスを確認、コマンドプロンプトを再起動、PCを再起動の順に確認する)
##・ログイン
psql -U postgres -d postgres
パスワードを聞かれるので答える。
(今回の場合 test と入力する)
ユーザ postgres のパスワード:
psql (9.6.1)
"help" でヘルプを表示します.
postgres=#
と出れば成功。
##・SQLを実行する
SQLを記述する。
SELECT * FROM pg_shadow;
※この時、末尾のセミコロンを忘れると何も起こらないので注意
postgres=# SELECT * FROM pg_shadow
postgres-# (シーン……)
必ず末尾にセミコロンを付けること。
##・ログアウト
ログアウトするには下記のコマンドを入力する。
\q
(※こちらはセミコロンはいらない)
#■よくあるエラー等
##認証失敗
FATAL: ユーザ"<ユーザー名>"のパスワード認証に失敗しました (pgjdbc: autodetected server-encoding to be MS932, if the message is not readable, please check database logs and/or host, port, dbname, user, password, pg_hba.conf)
→ パスワードが間違っている。
##DB未指定
psql: FATAL: データベース"testuser"は存在しません
→ psql -U <ユーザー名> でログインしようとした時に発生。DBを指定しないとき発生する。
psql -U <ユーザー名> -d とするとログイン出来るようになる。
##権限不足
org.postgresql.util.PSQLException: ERROR: リレーション <テーブル名> への権限がありません
→ テーブルへのアクセス権限がない。テーブルへのアクセス権限を設定してください。
##pg_hba.confのエラー
psql: FATAL: pg_hba.conf の読み込みができませんでした
→ pg_hba.confの記述にエラーがある。
(認証の部分で「md5」と書くべきところを「MD5」と大文字で書いたら発生しました)
##コマンドの大文字小文字の間違い
psql: illegal option -- u
詳細は 'psql --help' をごらんください
→ 「psql -u <ユーザ名> -d 」で発生。-uが小文字になっている。コマンドは大文字小文字を区別するので注意
#■以上
以上です。
これでコマンドプロンプトからSQLを発行することが出来るようになりました。
いろいろなSQLを発行して遊んでみましょう。
はじめはシステムDBをあれこれ検索してみるのがおすすめです。
続き
PostgreSQLでユーザー(ロール)を追加してテーブルにアクセスする
http://qiita.com/wb773/items/248e6e083b2fe12e820a