Ubuntu 18.04 に PostgreSQL をインストールして使用する方法
PostgreSQL (略してPostgres) は、オープンソースの強力かつ先進的で高性能かつ安定したリレーショナル ドキュメント データベース システムです。 SQL 言語を使用し、強化し、安全なデータの保存と管理のための多数の機能を組み合わせます。
高いデータ整合性を確保しながら、大量で複雑なデータを処理し、エンタープライズ レベルのフォールト トレラント環境をセットアップするために、効率的で信頼性が高く、スケーラブルです。 Postgres は API に付属するインデックスなどの機能により拡張性も高く、データ ストレージの課題を解決する独自のソリューションを開発できます。
この記事では、Ubuntu 18.04 サーバーに PostgreSQL をインストールする方法 (古い Ubuntu リリースでも動作します) を説明し、その基本的な使用方法をいくつか学びます。
Ubuntu に PostgreSQL をインストールする方法
まず、リポジトリ設定を保存するファイル /etc/apt/sources.list.d/pgdg.list を作成し、次にリポジトリ キーをシステムにインポートし、システム パッケージ リストを更新して、Postgres パッケージをインストールします。次のコマンドを使用します。
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
sudo apt install wget ca-certificates
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
sudo apt install postgresql-10 pgadmin4
postgres がインストールされると、データベース サービスが自動的に開始され、次のコマンドを入力して確認できます。
sudo systemctl status postgresql.service
PostgreSQL のロールとデータベースの使用方法
postgres では、クライアント認証は /etc/postgresql/10/main/pg_hba.conf 構成ファイルによって制御されます。データベース管理者のデフォルトの認証方法は「ピア」 です。これは、ローカル接続の場合、オペレーティング システムからクライアントのオペレーティング システム ユーザー名を取得し、それが要求されたデータベース ユーザー名と一致するかどうかを確認してアクセスを許可することを意味します。 (次のスクリーンショットに示すように)。
インストール プロセス中に、postgres というシステム ユーザー アカウントがパスワードなしで作成されました。これはデフォルトのデータベース管理者のユーザー名でもあります。
sudo vim /etc/postgresql/10/main/pg_hba.conf
さらに、postgres ではデータベースのアクセス許可管理はロールによって実行されます。ロールは、ロールの設定方法に応じて、データベース ユーザーまたはデータベース ユーザーのグループのいずれかとして考えることができます。
デフォルトの役割もpostgresです。重要なのは、データベース ロールは概念的にはオペレーティング システム ユーザーと完全に関連していませんが、実際には分離されていない可能性があります (たとえば、クライアント認証の場合)。
重要なのは、ロールはデータベース オブジェクトを所有でき、それらのオブジェクトに対する権限を他のロールに割り当てて、誰がどのオブジェクトにアクセスできるかを制御できることです。さらに、あるロールのメンバーシップを別のロールに付与することもできます。
デフォルトの postgres ロールとは別に、暗号化されたパスワードを使用してそれらに割り当てられたデータベースを管理するように他のロールを構成するには、行を次のように変更する必要があります。
Then restart the postgresql service to apply the recent changes.
sudo systemctl restart postgresql
Ubuntu で PostgreSQL を使用する方法
すべての設定が完了したら、次のコマンドを使用して postgres システム アカウントにアクセスできます。ここで、-i
フラグは、ターゲット ユーザーのパスワード データベース エントリによって指定されたシェルを実行するように sudo に指示します。ログインシェル。
sudo -i -u postgres
psql #to launch the postgres shell program
postgres=#
最初に postgres ユーザー アカウントにアクセスせずに、postgres シェルに直接アクセスするには、次のコマンドを実行します。
sudo -i -u postgres psql
次のコマンドを入力すると、postgres を終了/終了できます。
postgres=# \q
PostgreSQL データベース ロールの作成
次のコマンドを使用して、新しいユーザー ロールを作成します。
postgres=# CREATE ROLE tecmint;
LOGIN 属性を持つロールを作成するには、次のコマンドを使用します (LOGIN 属性を持つロールはデータベース ユーザーと同じであると見なされます)。
postgres=#CREATE ROLE tecmint LOGIN;
OR
postgres=#CREATE USER name; #assumes login function by default
ロールはパスワードを使用して作成することもできます。これは、データベースに接続するときにユーザーに暗号化されたパスワードの入力を求めるようにクライアント認証方法を構成した場合に便利です。
postgres=#CREATE ROLE tecmint PASSWORD 'passwd_here'
既存の PostgreSQL データベース ロールの一覧表示
既存のユーザー ロールを一覧表示するには、次のコマンドのいずれかを使用します。
postgres=# \du #shows actual users
OR
postgres=# SELECT rolname FROM pg_roles;
PostgreSQL データベース ロールを削除する
既存のユーザー ロールを削除するには、次のようにDROP ROLE コマンドを使用します。
postgres=# DROP ROLE tecmint;
PostgreSQL データベースを作成する
特定の名前 (tecmint ユーザーなど) でロールを作成したら、図に示すように、そのロールによって管理されるデータベース (ロールと同じ名前) を作成できます。
postgres=# CREATE DATABASE tecmint;
ここでデータベース tecmint を管理するには、tecmint ロールとして postgres シェルにアクセスし、次のようにパスワードを入力します。
sudo -i -u tecmint psql
PostgreSQLテーブルを作成する
テーブルの作成は非常に簡単なので、図に示すように、authors という名前のテスト テーブルを作成します。このテーブルには、TecMint.com の作成者に関する情報が保存されます。
tecmint=>CREATE TABLE authors (
code char(5) NOT NULL,
name varchar(40) NOT NULL,
city varchar(40) NOT NULL
joined_on date NOT NULL,
PRIMARY KEY (code)
);
テーブルを作成した後、次のようにテーブルにデータを入力してみます。
tecmint=> INSERT INTO authors VALUES(1,'Ravi Saive','Mumbai','2012-08-15');
テーブルに保存されているデータを表示するには、SELECT コマンドを実行します。
tecmint=> SELECT * FROM authors;
PostgreSQL データベース テーブルの一覧表示
次のコマンドを使用して、現在のデータベース内のすべてのテーブルを一覧表示できます。
tecmint=>\dt
PostgreSQL テーブルの削除/ドロップ
現在のデータベース内のテーブルを削除するには、DROP コマンドを使用します。
tecmint=> DROP TABLE authors;
すべての PostgreSQL データベースをリストする
すべてのデータベースを一覧表示するには、次のコマンドのいずれかを使用します。
tecmint=>SELECT datname FROM pg_database;
OR
tecmint=>\list #shows a detailed description
OR
tecmint=>\l
PostgreSQL データベースの削除/ドロップ
データベースを削除する場合は、DROP コマンドなどを使用します。
tecmint=>DROP DATABASE tecmint;
別の PostgreSQL データベースに切り替える
次のコマンドを使用して、あるデータベースから別のデータベースに簡単に切り替えることもできます。
tecmint=>\connect database_name
詳細については、PostgreSQL 10.4 のドキュメントを参照してください。
今のところはここまでです!この記事では、Ubuntu 18.04 に PostgreSQL データベース管理システムをインストールして使用する方法を説明しました。コメントでご質問やご意見をお寄せください。