【Linux】postgreSQLのインストール・パスワード設定・外部接続/ログイン方法
# 💎 PostgreSQL
1. Linux(Debian)にインストール
2. スーパーユーザのパスワード設定
3. 外部接続の設定
✅ 1. Linuxにインストール
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# macからDebinにリモート接続
$ ssh -p <ポート番号> -l <ユーザ名> <IPアドレス>
# Debianのバージョン確認
$ cat /etc/debian_version
# =>10.3
# 公式のをコピペすると、そんなファイルありませんと出るのでtouchであらかじめファイル作成
$ sudo touch /etc/apt/sources.list.d/pgdg.list
# 許可がありませんと出るので実行権限を追加
$ sudo chmod u+x /etc/apt/sources.list.d/pgdg.list
# suでスーパーユーザになる
$ cat /etc/apt/sources.list.d/pgdg.list
# CA証明書をインストール
$ sudo apt install wget ca-certificates
# PostgreSQL公開鍵(リポジトリ署名キー)を追加
# exit # スーパーユーザをログアウト
# パッケージリストの更新
$ sudo apt-get update
# バージョンを指定しなければ最新バージョンをインストール
$ sudo apt-get -y install postgresql
(※特定のべージョンをインストールしたかったら、$sudo apt-get install postgresql-11 # バージョン11)
# postgreSQLのバージョン確認
$ psql --version
# => psql (PostgreSQL) 13.0 (Debian 13.0-1.pgdg100+1)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- インストールはこれで完了!
- ssh接続方法はscrapboxの「macからDebianにssh接続」にまとめた
# ✅ 2. ログインしてスーパーユーザーのパスワード設定
- PostgreSQLをインストールすると**自動的に**postgresユーザー(データベースの管理ユーザー)が作成される。さっそくユーザーでログインする。
- パスワード設定が必要な理由:このままではpostgresユーザーのパスワードは未設定であり、アカウントロック状態になっている。これでは**sudoコマンドをつけるしかログインする方法がないため、ユーザーパスワードを設定する必要がある。**
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# データベース管理でPostgreSQLにログイン
$ sudo su - postgres
# @ホスト名 の前がhattorisakiからpostgreに変わった
# postgresqlにルートでログインしていることが前提
$ sudo su - postgres # su - postgres = postgresqlにスーパーユーザでログイン
# 今回はpdadminというユーザー名でスーパーユーザーを設定
$ createuser --pwprompt --interactive pgadmin # createuser --pwprompt --interactive 設定したいユーザー名で作成
# 自分で作ったスーパーユーザでログイン ※普段はこれでログインする!
$ psql -U pgadmin -d postgres -h localhost
※-U postgresではログインできないので注意。
# プロンプトが以下に変わる
postgres=#
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- これでスーパーユーザのパスワード設定が完了し、sudoをしなくなくてもログインできるようになった
# ✅ 3. 外部接続の設定
- 外部接続とは?:ローカル(ここでは自分のMac)で、PostgreSQLを使ってサーバーのデータベースに接続すること
- コマンドの実行をlinux/postgresのどちらで行っているか、混乱しそう→最初から最後までlinuxで実行していた
- **参考記事をそのままコピペせず、意味を理解してから実行する!
設定ファイルを開こうとしたらすでに存在してるはずなのに新規作成になるので、確認したらインストールしたバージョンの番号が違うからだった。私のバージョンは13
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# 実行したこと
# PostgreSQLの設定が記述されているpostgresql.confを編集
$ su @linux
# 「#listen_addresses = 'localhost'」を、「listen_addresses = '*'」に変更
# ※先頭の「#」を消さないと設定が反映されないので消す
# 自分のIPアドレスを確認
$ hostname -I
# pg_hba.confファイルを編集
# sudo vim etc/postgresql/13/main/pg_hba.conf
# IPv4 local connections: に追加(✗変更)
host all all <debianのIPアドレス>/32 md5
# 再起動
$ sudo service postgresql start
# ★linuxから外部接続を試す★
root@linuxのホスト名:/# psql -U <postgresqlのスーパーユーザ名> -d postgres -h <ホスト名>
# =>postgres=# と出たら成功!
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
→これで外部接続できるようになった
# ❓ \32 はなんの数字なのか?
- pg_hba.confを編集した時に、「host all all 自分のIPアドレス/32 md5」と追加してと指示があったが、\32の数字は何を指すのか?
- 入れる数字がブログや記事によって異なっていた。
posgreSQLが入っているサーバーと外部接続する端末との関係によって変わってくるのと、サブネットマスクについて理解していないと正しい値として何を設定すればいいか判断できない
- 疑問解決できていないので、to doリストに追加した
👀 参考にした記事
✅ psqlコマンド
- Linux版のPostgreSQLの場合であれば、シェル上からpsqlコマンドを実行
- psql -U <データベースユーザー名> <データベース名>
- Uオプションでデータベースのユーザー名を指定し、引数としてデータベース名を指定
- バックスラッシュコマンドというのがある
- データベースに関する情報は、psqlで実装されているバックスラッシュコマンドで参照できます
✅SQLの主な構文
- SELECT:必要なデータを検索し、取り出す
- INSERT:テーブルへのデータ登録
- UPDATE:INSERTコマンドで登録したデータを変更(更新)
- DELETE文:INSERTコマンドで登録したデータを削除