Mac psqlコマンドのPATHを通す

SQL Shell(psql)を使用してでpostgreSQLにアクセスし、コマンドで操作をする方法 その1

はじめに

PostgereSQLを1クリック インストーラーでダウンロード、インストールすることができます。Launchpadに下記の様にインストールされて表示されていると思います。

SQL Shell(psql)を使用することでpostgreSQLにアクセスし、コマンドで操作をすることが可能になりますが、普段使いのitermでは操作することができません。今回はitermからpsqlコマンドを使用できる様に設定していきます。

実行環境

macOS (Catalina) version 10.15.2

macbook Pro(15-inch, 2017)

brew –version : 2.2.2

nodebrew use (current: 12.13.1)

npm version (6.12.1)

PostgreSQLはどこにインストールされているのか

普段使いのitermやターミナルでpsqlコマンドを使用するにはshellにPATHを通さなければなりませんね。そこで、locateコマンドを使ってpostgreSQLの実行場所を探します。locateコマンドはマッチした条件のファイルを一覧で表示させることができます。

$ locate psql | grep /bin

しかし初めての場合は、以下の様なメッセージが表示されます。

WARNING: The locate database (/var/db/locate.database) does not exist.
To create the database, run the following command:

  sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist

Please be aware that the database can take some time to generate; once
the database has been created, this message will no longer appear.

データーベースを作成する様に指示が出ました。

言われている通り、sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plistコマンドをターミナルで実行します。

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist

データーベースの作成には時間がかかる様です。次のコマンドで早くすることができる様です。それでも時間がかかりました。

sudo /usr/libexec/locate.updatedb

終わったらもう一度検索をかけます

$ locate psql | grep /bin

そうするとpsql関係のパスが表示されました。

/Library/PostgreSQL/11/bin/psql
/Library/PostgreSQL/11/debug_symbols/bin/psql.dSYM
/Library/PostgreSQL/11/debug_symbols/bin/psql.dSYM/Contents
/Library/PostgreSQL/11/debug_symbols/bin/psql.dSYM/Contents/Info.plist
/Library/PostgreSQL/11/debug_symbols/bin/psql.dSYM/Contents/Resources
/Library/PostgreSQL/11/debug_symbols/bin/psql.dSYM/Contents/Resources/DWARF
/Library/PostgreSQL/11/debug_symbols/bin/psql.dSYM/Contents/Resources/DWARF/psql

.bash_profileにPATHを通す

vi コマンドでエデイターを起動し、.bash_profileを編集します。

$ vi ~/.bash_profile

起動したらi + enterでインサートモードにすることで編集が可能になります。では、〜/ .bash_profileに次のようにパスに追加します。

$ export PATH=$PATH:/Library/PostgreSQL/11/bin

終了するにはescの後 :wqコマンドを使います。編集をセーブするコマンドで、セーブしない場合は:qで終了します。その場合は編集がセーブされませんので気をつけてください。

次にシステムに反映させます。

$ source .bash_profile

一応パスを確認しましょう。

$ echo $PATH

E45 readonly option is set(add ! to override)が出た場合

escから :w !sudo tee %と入力し、:q!で上書きすることができます。

:W !sudo tee %
:q!

psqlコマンドをitermで使用する

パスが通せたら実際にitermで確認しましょう。

$ psql

そうするとパスワードを聞かれます。しかし、インストール時のパスワードを叩いてもログインすることができない場合があります。私の時はそうでした。これはpostgreSQLの認証方法の様です。postgresでないUnixのユーザーでログインしたシェルからはログインできない様になっています。ですが次のコマンドを叩いてください。

参考はこちらです。

$ psql -U postgres -h localhost -W

インストール時のパスワードを叩いてください。


psql (11.6) Type "help" for help.
postgres=#

ログインすることができました。

ではデーターベースを表示させましょう。

postgres=# \l
                                    List of databases
      Name      |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
----------------+----------+----------+-------------+-------------+-----------------------
 postgres       | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 |
 postgres-users | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 |
 template0      | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres          +
                |          |          |             |             | postgres=CTc/postgres
 template1      | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres          +
                |          |          |             |             | postgres=CTc/postgres
 test           | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 |
 testdb         | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 |
(7 rows)

この様に表示させることができました。

psqlコマンドによってデータベースやテーブルの作成、カラムやqueryを操作することもできます。ぜひ活用してみましょう。

まとめ

今回はpsqlコマンドのPATHを通すをやってきました。postgreSQLがどこのインストールされているのか調べるためにlocateコマンドを使ったり、PATHを通すために.bash_prfileを編集したりしました。

SNSでもご購読できます。

検索

コメント

  1. Awesome post! Keep up the great work! 🙂

Comments are closed.