PostgreSQL(psql)の接続と切断

psqlの接続と接続、指定したデータベースへの接続

普段はMySQLを使用しているので、PostgreSQLとはDBへの接続方法やDBの選択や終了などを違うので簡単にまとめてみました

psqlへの接続

PostgreSQLへのデータベースへの接続は、「psql」という、コマンドラインベースのツールを利用します。
データベースへの接続方法は、「psql -U postgres」で接続できます。psqlに接続できると「postgres=# 」の表示に変わります

# データベースに接続します
$ psql -U postgres
psql (9.2.24)
Type "help" for help.

postgres=# 

# postgresユーザーにスイッチしてから、psql を叩いてもデータベースに接続できます
# su - postgres
Last login: Fri Oct  1 10:58:30 JST 2021 on pts/0
-bash-4.2$ psql
psql (9.2.24)
Type "help" for help.

postgres=# 

# postgresユーザー以外では、「psql」コマンドを叩いてもログインはできないので、roleがないので、ログインできません
# psql
psql: FATAL:  role "root" does not exist

指定したデータベースに接続する

MySQLでは「use DB名」で、指定したデータベースに接続できましたが、PostgreSQLでは、「\c DB名」となります。また、psqlコマンドで、「psql -U postgres -d DB名」でも、指定したDBに接続できます

# testshop  という、データベースに接続します。

# データベース一覧を表示します
postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 testdb    | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(4 rows)

# testdbに接続します
postgres=# \c testshop
You are now connected to database "testdb" as user "postgres".
testdb=# 

# psqlに接続時にデータベースを指定してログインもできます」
-bash-4.2$ psql -d testdb
psql (9.2.24)
Type "help" for help.

testdb=# 

psqlへの切断する

psqlコマンドを終了するには、MySQLのように「exit」や「crtl 」+「c」とかやっても終了しません。
\q」で終了します。この終了方法しらないと、終了方法がわからずに結構焦ります

postgres=# \q