1.PostgreSQLでデータベースを作りたい
PostgreSQLで新しいデータベースを作りたいときは、CREATE DATABASEステートメントを使うんだよ。以下はシンプルな例だ📝
$ CREATE DATABASE test_db; # データベース作成
$ \1 # データベース一覧
データベースを作成した後、そのデータベースに接続して作業を開始することができるよ。
接続は次のように行います。
$ psql -U [ユーザー名] -d [データベース名]
切断は次のように行います
$ test_db=# \q
また、次のコマンドを実行するとデータベースを作成と同時に特定のユーザーをそのデータベースの所有者として指定することもできます。
$ CREATE DATABASE test_db2 WITH OWNER = [所有するユーザー名]; # 所有者を指定したデータベースの作成
CREATE DATABASE
$ \l+ # データベース一覧を詳細表示
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges | Size | Tablespace | Description
---------------+----------+----------+---------+-------+-------------------+---------+------------+--------------------------------------------
izumi777 | izumi | UTF8 | C | C | | 8673 kB | pg_default |
php_testdb | izumi | UTF8 | C | C | | 8657 kB | pg_default |
postgres | izumi | UTF8 | C | C | | 8657 kB | pg_default | default administrative connection database
quizdb | izumi | UTF8 | C | C | | 8753 kB | pg_default |
scrapinggetdb | izumi | UTF8 | C | C | | 8961 kB | pg_default |
template0 | izumi | UTF8 | C | C | =c/izumi +| 8505 kB | pg_default | unmodifiable empty database
| | | | | izumi=CTc/izumi | | |
template1 | izumi | UTF8 | C | C | =c/izumi +| 8505 kB | pg_default | default template for new databases
| | | | | izumi=CTc/izumi | | |
test_db | izumi777 | UTF8 | C | C | | 8657 kB | pg_default |
test_db2 | izumi777 | UTF8 | C | C | | 8505 kB | pg_default |
これにより、新しいデータベースが指定したユーザーによって所有される。
データベース作成時に特定のユーザーをデータベース所有者として指定するメリット
データベースを作成するときに特定のユーザーをそのデータベースの所有者として指定するメリットは次のようなメリットがあるよ😄
1.アクセス権のわかりやすさ:
データベースを作るとき、所有者を指定すると、そのデータベースへのアクセス権がバッチリ設定されるんだ。指定したユーザーがデータベースに対して特権を持って、例えばテーブルの作成やスキーマの変更なんかができるようになるわけ。
2.セキュリティアップ:
データベース作るとき、デフォルトの postgres ユーザー以外のユーザーを指定すると、システムのセキュリティがアップするんだよ。postgresユーザーは通常システム全体のボスだし、データベースのオーナーにはもっと制限された権限があるんだ。
3.スキーマがバラバラ:
特定のユーザーをデータベースのオーナーにすると、そのユーザーが管理するデータベース内でのスキーマの作成や変更が楽になるんだ。違うユーザーが違うデータベースをもつことで、スキーマがバラバラになり、データの整理と保守がラクになるんだよ。
4.バックアップとリストア:
データベースのオーナーを指定すると、特定のユーザー権限でデータベースのバックアップとリストアができるようになるんだ。これによって、データベースの復旧時に特定のユーザー権限がキープされることが確かめられるんだ。
ただし、適切な権限管理が必要で、データベースのオーナーになるユーザーに不必要な特権を与えるのは避けるべき。最小限の特権でデータベースのオーナーになるのが、セキュリティと整合性を守るためにベストなやり方だよ。※ 権限関係はクラウドとかデータベースとか限らず最小権限の原則が鉄板のようだ。
データベース入門書おすすめ
「マンガでわかるデータベース」は、データベースの基本概念から高度なトピックまでを、わかりやすい漫画と共に解説した書籍です。データベース初学者は漫画をベースに手軽に学習を進めることができ、データベースに関する理解が深まります。データベースに初めて触れる方におすすめの一冊です。
「スッキリわかるSQL」は、SQLの基本から応用までを分かりやすく解説した実践的な書籍です。初学者でも理解しやすい構成で、データベース操作に必要なSQL文の使い方や効果的なクエリの書き方を身につけることができます。コード例や視覚的な要素を活用し、読者がSQLをスムーズにマスターできるように工夫されています。プログラマー、データアナリスト、システムエンジニアなど、SQLを学びたいあらゆる読者に適した実践的な一冊です。
「SQL ゼロからはじめるデータベース操作」は、初心者向けのプログラミング学習シリーズです。プロのデータベースエンジニアが基礎とコツをやさしく解説し、DB/テーブルの構造から検索や更新の構文、関数、テーブルの結合などSQLの基本を学習します。豊富な図とサンプルプログラムで難しい部分も分かりやすく解説し、標準SQLをベースに各種DBでの違いや基礎ノウハウも網羅。第2版では最新DBに対応した解説とサンプルコード、アプリケーションプログラムからのSQL実行方法も新たに追加。データベースアプリ制作やSQLスキル向上を目指す方におすすめの一冊です。