【目次】
【サイト内の関連ページ】
【外部ページへのリンク】
Ubuntu で OS のシステム更新を行うときは, 次のコマンドを実行.
Ubuntu のインストールは別ページ »で説明
sudo apt -y update sudo apt -yV upgrade sudo /sbin/shutdown -r now
PostgreSQL はリレーショナル・データベース管理システム. コマンドラインクライアントは psql で起動.
インストールするには, 次のコマンドを実行.
sudo apt -y update sudo apt -y install postgresql-12 postgresql-client-12 postgresql-client-common postgresql-common postgresql-contrib odbc-postgresql pgadmin3 postgresql-12-postgis-3 postgresql-server-dev-12 python3-psycopg2 default-jdk libpostgresql-jdbc-java postgresql-plpython3-12 libpq-dev
エラーメッセージが出ていなければ OK.
sudo pg_ctlcluster 12 main start sudo pg_ctlcluster 12 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/12/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 12 main restart sudo pg_ctlcluster 12 main status
md5 認証のときは psql -U <ロール名> -d <データベース名>
psql -U testuser -d postgres \c \q
sudo pg_ctlcluster 12 main restart sudo pg_ctlcluster 12 main status
sudo pg_ctlcluster 12 main stop sudo pg_ctlcluster 12 main status
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