Ubuntu に,PostgreSQL 13, pgAdmin 3, PostGIS 3 のインストールを行う. そして,pgAdmin 3 の主要機能を動かしてみる.
※ インストールは,https://wiki.postgresql.org/wiki/Apt に記載の手順に従う.
【目次】
【外部ページへのリンク】
Ubuntu で OS のシステム更新を行うときは, 次のコマンドを実行.
Ubuntu のインストールは別ページ »で説明
sudo apt -y update sudo apt -yV upgrade sudo /sbin/shutdown -r now
https://wiki.postgresql.org/wiki/Apt に記載の手順に従う.
sudo apt -y update sudo apt -y install curl ca-certificates gnupg curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
sudo apt -y update
apt-cache search postgresql sudo apt -y install pgadmin3 postgresql-13-postgis-3
sudo pg_ctlcluster 13 main restart sudo pg_ctlcluster 13 main status
Ubuntu のサービスアカウント postgres と peer 認証により,PostgreSQL の psql を使ってみる.
「\c」により,使用されている PostgreSQL のロール名と,オープンされているデータベース名を確認.
確認したら,「\q」により終了.
sudo -u postgres psql \c \q
postgres, template0, template1 の 3 つのデータベースが表示されることを確認.
sudo -u postgres psql \l \q
psql --version
peer 認証について確認する.そして,md5 認証について設定できることを確認する.
PostgreSQL サービスアカウントは,Postgres サーバの起動等に使うもの.Ubuntu では,既定(デフォルト)で,peer 認証が行えるようにも設定されている.
Ubuntu でパッケージを使って PostgreSQL をインストールすると,PostgreSQL サービスアカウント(ユーザ名は「postgres」)が自動的に作成される.
次のコマンドで確認できる.
sudo cat /etc/passwd | grep postgres
※ 「x」は no password という意味(パスワードがないという意味ではない)
PostgreSQL サービスアカウントは Linux が管理するアカウントのこと.PostgreSQL が管理するロールとは別のものである.
sudo cat /etc/postgresql/13/main/pg_hba.conf
「\c」により,使用されている PostgreSQL のロール名と,オープンされているデータベース名を確認.
確認したら,「\q」により終了.
sudo -u postgres psql \c \q
PostgreSQL での新しいロールの追加と md5 認証の設定を行ってみる.
これは,「Redmine のインストール」に必要な設定ではない. PostgreSQL での新しいロールの追加と md5 認証の設定を試したいときのためのもの.
下の手順で,PostgreSQL で,新しいロール testuser を作成し md5 認証できるように設定してみる
パスワードは,下のものをそのまま使うのでなく,必ず独自に設定してください.
sudo -u postgres psql create role "testuser" with login encrypted password 'hoge7618mhty'; \du \q
そのために,次の1行を追加する
local all all md5
エラーメッセージが出ていなければ OK.
sudo pg_ctlcluster 13 main restart sudo pg_ctlcluster 13 main status
md5 認証のときは psql -U <ロール名> -d <データベース名>
psql -U testuser -d postgres \c \q
sudo pg_ctlcluster 13 main restart sudo pg_ctlcluster 13 main status
sudo pg_ctlcluster 13 main stop sudo pg_ctlcluster 13 main status
psql の種々の操作について: 別ページ »で説明
sudo -u postgres psql
create table order_records ( id integer primary key not null, year integer not null CHECK ( year > 2008 ), month integer not null CHECK ( month >= 1 AND month <= 12 ), day integer not null CHECK ( day >= 1 AND day <= 31 ), customer_name text not null, product_name text not null, unit_price real not null check ( unit_price > 0 ), qty integer not null default 1 check ( qty > 0 ), created_at timestamp with time zone not null default current_timestamp, updated_at timestamp with time zone not null default current_timestamp, check ( ( unit_price * qty ) < 200000 ) );
begin transaction; insert into order_records (id, year, month, day, customer_name, product_name, unit_price, qty) values( 1, 2020, 7, 26, 'kaneko', 'orange A', 1.2, 10 ); insert into order_records (id, year, month, day, customer_name, product_name, unit_price, qty) values( 2, 2020, 7, 26, 'miyamoto', 'Apple M', 2.5, 2 ); insert into order_records (id, year, month, day, customer_name, product_name, unit_price, qty) values( 3, 2020, 7, 27, 'kaneko', 'orange B', 1.2, 8 ); insert into order_records (id, year, month, day, customer_name, product_name, unit_price) values( 4, 2020, 7, 28, 'miyamoto', 'Apple L', 3 ); commit;
select * from order_records;
begin transaction; update order_records set unit_price = 11.2 where id = 1; commit; select * from order_records;
\d
\q