Just do IT

思うは招く

Debian に PostgreSQL をインストールする方法

やりたいこと

すこしハマったので忘備録的なメモ。

Linux(Debian)にPostgreSQLをインストールする手順

まず、何も設定していない状態でいきなりPostgreSQLをインストールしようとしてハマった。何度やってもうまく行かず、いろいろ調べたら「PostgreSQLをインストールするには前準備が必要」と知った。なんだよそれッッ。

リポジトリの追加

まず、リポジトリのパスを記載するためのファイルを作成する。

sudo touch /etc/apt/sources.list.d/pgdg.list

(touchだけではダメでsudo権限をつけなければいけなかった)

リポジトリのパスを記載する。

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ buster-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

これは"deb http://apt.postgresql.org/pub/repos/apt/ buster-pgdg main"という文字列をechoしてリダイレクトし、ファイルに書き込んでいる。

だが、ここで注意!

apt/ buster-pgdg main
  • busterの左には半角スペースがあること
  • busterの部分は自分が使用しているDebianのバージョンによって名前を変える

スペースを空けるのは良いとして、バージョンについては要注意。私はDebian10系を使っており、コードネームはbuster。9系ならstretch。8系ならjessie。

「あれ、自分のDebianのバージョンなんだっけ?」という方は次のコマンドでバージョンが確認できる。

cat /etc/debian_version
=> 10.2

各バージョンのコードネームを知るにはこちら。

Debianのコードネームがトイ・ストーリーなのでマッピングしてみた | 株式会社ランチェスター

ファイルが作成できたら次へ。

クライアント証明書をインストール

PostgreSQLの公式リポジトリを信頼するためのキーを取得する。

sudo apt-get -y install wget ca-certificates

成功したらこんな感じのが出る。

Reading package lists... Done
Building dependency tree       
Reading state information... Done
ca-certificates is already the newest version (20190110).
ca-certificates set to manually installed.
wget is already the newest version (1.20.1-1.1).

0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

キーを自分のパソコンへ追加。

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

PostgreSQLをインストール

まずはインストールする前に必ずすべきアップデート。

sudo apt-get update
sudo apt-get upgrade

そしてようやくPostgreSQL(10)をインストールッッ。

sudo apt-get install postgresql-10

できなければこちらも試す。

sudo apt -y install postgresql-10

インストールされているか確認。

psql --version

PostgreSQLをインストールすると、自動的にデータベースの管理ユーザー「postgresユーザー」が作成される。 よって、postgresユーザーでPostgreSQLにログインしてみる。

sudo su - postgres

これで入れるはず。

postgres@os3-390-28443:~$ 

できた!

しかし、このままではpostgresユーザーのパスワードは未設定であり、アカウントロック状態になっている。これではsudoコマンドをつけるしかログインする方法がないため、ユーザーパスワードを設定する必要がある。

ユーザー追加

rootでログインしていることが前提。

sudo su - postgres

次に、ユーザー作成。

createuser --pwprompt --interactive 設定したいユーザー名

今回はpdadminというユーザー名で作成する。

createuser --pwprompt --interactive pgadmin

こんなことが聞かれる。

Enter password for new role: 
Enter it again: 
Shall the new role be a superuser? (y/n)

パスワードを2回入力し、yを押してスーパーユーザーとして設定する。

次に、今作ったユーザーでログインしてみる。

psql -U pgadmin -d postgres -h localhost

パスワードを聞かれるので、今さっき登録したパスワードを入力する。

postgres=# 

するとログインできた。

以上、PostgreSQL のインストールと、設定でした。

パスワード設定やユーザー追加については以下の記事が詳しい。 db-study.com

外部接続を許可するには。 symfoware.blog.fc2.com

感謝の参照