PostgreSQLサーバのインストールをメモ_φ(・_・

Symfonyチュートリアルの「データベースをセットアップする」の回で、PostgreSQLをデータベースエンジンとして使うことが述べられ、Docker Composeへ追加することなどが記載されていました。

ここの回でハマりました。
そもそも私はまだPostgreSQLをインストールしていないことに気づきます。。

ここで確認。
PostgreSQLが正しくインストールされているかは以下のコマンドで確かめる。

postgres --version

PostgreSQLサーバーがインストールされているかの確認は以下。

psql --version

予想通り、バージョン番号は返ってきませんでした。ではインストールからしていきます。

PostgreSQLとPostgreSQLサーバーの違い

気になったので、ChatGPTで調べてみました。

PostgreSQLとは、オープンソースのリレーショナルデータベース管理システム(RDBMS)であり、サーバーとして動作することができます。一方、PostgreSQLサーバーとは、PostgreSQLが稼働するサーバーのことを指します。つまり、PostgreSQLサーバーは、PostgreSQLを実行するためのハードウェアや仮想マシンのことを指します。PostgreSQLは、クライアント・サーバーシステムの一部であり、PostgreSQLサーバー上で実行され、データを管理します。

インストールは公式サイトにてPostgreSQLのダウンロードから始めました。

PostgreSQL: Documentation

PostgreSQLを使用するためにpsqlコマンドのPATHを通す

この時点で、インストールは出来ているみたいだけど、コマンドでバージョン確認をしても、どちらもバージョンが返ってきませんでした。。。

足りないのは、変数を通すことだったようです。。ちなみに下記サイトの記事が大変参考になりました。

やったことを簡単にまとめておきます。

①まずPostgreSQLはどこにインストールされているのかを調べる。

「locate」コマンドを使ってPostgreSQLの実行場所を探す。
「locate」コマンドはマッチした条件のファイルを一覧で表示させることができる。

locate psql | grep /bin

②初めてのデータベースの作成

しかし初めての場合だったので、
To create the database, run the following command: 〜(略)〜
と、データベースを作成するよう、指示が表示される。
言われた通り、「sudo」コマンドで表示された1文を入力して実行。

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

するとpasswordの入力が求められるので、入力してエンター。

そこでしばらく待ちます。カーソルの位置がデフォルトの状態に戻ってしまうので、処理が終わったように見えるのですが、データベースの作成を裏側(?)で進めているようです。そしてその作成には時間がかかるのだとか。。
私はここで、再度①のコマンドを打ってみましたが
「WARNING: The locate database (/var/db/locate.database) does not exist.」
それとともに、先にも書いたような文章(To create the database, run the following command: 〜(略)〜)が表示されてしまいました。

そのため、再度②のコマンドを打つと
「service already loaded」や「Operation already in progress」と表示されていました。

ちなみに、次のコマンドで作成の時間を早くすることができるようです。

sudo /usr/libexec/locate.updatedb

それでも、作成までにはやはり多少時間はかかりました。時間は測っていませんが10分〜15分くらいは待ったかもしれません。。。

たっぷり時間を明けて再度、①のコマンドを試してみると、以下が表示されました。

/Library/PostgreSQL/15/bin/psql
/Library/PostgreSQL/15/debug_symbols/bin/psql.dSYM
/Library/PostgreSQL/15/debug_symbols/bin/psql.dSYM/Contents
/Library/PostgreSQL/15/debug_symbols/bin/psql.dSYM/Contents/Info.plist
/Library/PostgreSQL/15/debug_symbols/bin/psql.dSYM/Contents/Resources
/Library/PostgreSQL/15/debug_symbols/bin/psql.dSYM/Contents/Resources/DWARF
/Library/PostgreSQL/15/debug_symbols/bin/psql.dSYM/Contents/Resources/DWARF/psql
/opt/homebrew/Cellar/libpq/15.2/bin/psql

psql関係のパスが表示されるようになりました。

③.bash_profileにPATHを通す

では「.bash_profile」に環境変数を反映させていきます。
まず、viコマンドを使って以下のようにターミナルに打つ。

vi ~/.bash_profile

そうすると「.bash_profile」ファイルが開いて、ターミナル上で直接編集できる、編集モードに入ります。

ここで「i」キーを押すと挿入モードに。
(「i」+「Enter」でもできるそう。。)
挿入モードではテキストを編集することができます。

挿入モードにしたら、以下のコードを追加します(パスの追加)。

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

このパスは、さきほどpsql関係のパスがターミナルに表示されたとき、リストの一番上に表示されていたパスです(psqlまでのパス。パスの最後の「/psql」は省いてつけるようですね…)。

編集を終了しましょう。
「esc」キーを一旦押下。
上書き保存してファイルを閉じたいので、「:wq」を半角英字でそのまま打って、エンター。
(ちなみにセーブしないで終了する場合は「:q」)
これで、パスの追加は終了し、通常のターミナルの画面に戻ってきます。

次に今の編集で変更した内容をシステムに反省させましょう。
ターミナルで以下のコマンドを実行します。

source ~/.bash_profile

これで「.bash_profile」に書き込んだ環境変数が反映され、以降のセッションでも利用可能になりました。
ちなみに、このコマンドを打つ以外にも、ターミナルを一度終了して再度起動することでも、環境変数が反映されるそうです。

④パスが正しく設定されたかどうか確認する

以下のコマンドを実行します。

echo $PATH

このコマンドは、現在のシェルのパスを出力します。PATHには、設定されたディレクトリパスがコロン(:)で区切られた形式で表示されます。設定されたディレクトリパスにpsqlのインストール先が含まれているかどうかを確認します。

これで、以下の表示をみつけ

…(省略)….
:/Library/PostgreSQL/15/bin

先ほど通したパスが確認できました!

ここまでで一旦バージョンを確認して、インストールされているかどうかを確かめる

記事の冒頭でも書きましたが、もう一度インストール状況を確認してみましょう。PostgreSQLサーバーはどうでしょう?

psql --version

psql (PostgreSQL) 15.2

バージョン番号が返ってきました。パスもちゃんと通されているようです。
PostgreSQLほうはどうでしょうか?

postgres --version

postgres (PostgreSQL) 15.2

こちらも無事にバージョン番号が返ってきました!

ターミナルを一度閉じたらパスが通らなくなった!?

作業中に、ターミナルを閉じるとpsqlコマンドが使えずに焦りました(⌒-⌒; )

これについては、翌日の記事でまとめたいと思います。

psqlコマンドをターミナルで使用してデータベースを表示させてみる

では、 ターミナルにデータベースを表示させてみましょう。
まずはログインするために以下のコマンドを叩きます。

psql -U postgres -h localhost -W 

そうすると、パスワードを聞かれるのでPostgreSQL時に設定したパスワードを打ち込みます。
この時、表示はされませんが一通り打ってエンターを押します。

psql (15.2)
Type “help” for help.

postgres=#

と表示が出てくるので、

postgres=# \l

のように、「postgres=#」の後に「\l」を入力してエンター。そうすると

のようにデータベースを表示することができました!

psqlコマンドによってデータベースやテーブルの作成、カラムやqueryを操作することもできるそうなので、少しずつ覚えていきたいです!

この記事を書いた人