データベースの管理(作成、削除)
データベースとは、実際にデータを収める複数のテーブルやビュー,トリガといったスクリプトを統括し管理するためのものです。
ここでは MySQL データベースの管理における、データベースの作成、削除について解説します。 データベースの管理は、mysql にログインしてから SQL のクエリーで行います。
データベースを管理する上での注意点
ユーザーについて
データベースの作成はスーパーユーザーもしくはデータベースを作成することが許可されたユーザーであることが必要です。
Ubuntu で MySQL を標準インストールするとスーパーユーザーはroot
です。ここでは話を簡単にするためにユーザーはroot
として解説します。
もしもサーバーとして運用するためなら、まずは mysql_secure_installation
によってセキュリティー設定をおこないます。さらに、スーパーユーザー、ユーザーの追加を検討した方がよいでしょう。
データベースの操作、特にデーターの追加、更新、削除といった操作を root のような一般的によく知られたスーパーユーザーで行えるようにしておくのはセキュリティー上好ましくありません。
外部からデータベースに接続できるのが一般的に知られたスーパーユーザーにしておくと、ログインできた場合にデータベースのすべてが改変できるためです。
データベースの作成やデータ操作は別名のユーザーまたはローカル接続のみから行えるようにしておいた方がよいでしょう。
データベースの一覧
MySQL における既に作成されたのデーターベースの確認方法です。
mysql にログイン後に SHOW databases; を実行します。
information_schema
は全てのデータベースを管理するためのメタデータを保持しているデータベースです。MySQL サーバーが管理しています。
performance_schema
はクエリやトランザクションの実行によるログが記録されるデータベースです。
データベースの作成
新規にデータベースを作成する方法です。データベースの作成はスーパーユーザーまたはデータベースの作成権限をもつユーザーでなければなりません。
以下はスーパーユーザーroot
によるデータベースの作成例です。
mysql にログインまたは SQL コマンドが使える環境で CREATE DATABASE
クエリーを実行します。
$ sudo mysql
...
# CREATE DATABASE dbname;
この場合、root のデータベースとして作成されます。
オーナーを指定したデータベース作成
任意のユーザーを指定してデータベースを作成することもできます。
方法としては、データベースを作成するときに任意のユーザーをオーナーとして設定します。普段はこのオーナーユーザーでデータベースと接続します。
ここでオーナーにするユーザーは事前に追加しておかなければなりません。
作成が成功しても何の応答もないので、上記の「データベースの一覧」で作成状況を確認してください。
スーパーユーザーだけがデータベースを操作できることは危険ですので、他のユーザーでデータベースが操作できるようにした方がよいでしょう。
rolename
はロール名です。データベースではユーザーは正確にはロールとして扱います。ロールはデータベースの操作権限をもったユーザーのことです。
特に、API やネットワークを通したデータベースへの接続認証はロール
で管理します。ユーザー認証が必要な場面ではロールとして管理されていることを憶えておいたほうがよいでしょう。
ユーザー、ロールについて詳しくはユーザー(ロール)管理
ページを参照してください。
データベースにログインユーザを登録
データベースに任意のログインユーザーを新規登録することができます。
psqlコマンドプロンプト
psql my_database ... foodatabase=# create role foo_usr with login; CREATE ROLE
この例では、ユーザfoo_usrがmy_databaseにアクセスできるようになります。
詳しくはロール(ユーザー)の追加
を参照してください。
データベースに接続
作成したデータベースにテーブルやビューを作成したりデータを編集するためには、データベースを指定し接続しなければなりません。
データベースに接続する方法には、mysql コマンドでデータベースを指定する、mysql コマンドプロンプトで USE コマンドを実行する方法があります。
mysql コマンドでは -p オプションでデータベースを指定します
-u オプションは mysql にログインするユーザーの指定です。
現在使用中のデータベース
現在接続中のデータベースを確認するには SELECT クエリーで databse() 関数を使用します。
もしも以下のように database() カラムの内容が NULL の場合は使用中のデータベースがないことを示しています。
データベースを切り替えるには以下のような use クエリーを実行します。
データベース切り替え
mysql にログインした状態でデータベースを切り替えるには USE コマンドを使用します。
SELECT databse() を実行して以下のようにデータベースが表示されたらデータベースの切り替えができています。
詳細なデータベースの確認
現在使用できるデータベースについて詳細なデータを確認するには、SHOW PROCESSLIST クエリーを実行します。
db の項目をみてみると NULL と表示されています。現在データベースがないことが分かります。
データベースの削除
データベースを削除するには、データベースの作成権限をもつユーザまたはデータベースオーナーで、DROP クエリーを実行します。
例えば db_name データベースを削除するには以下のようなクエリーを実行します。
指定データベースがあるかを確認するには以下のようにします。
指定したデータベースがない場合はエラーが出て終了するための配慮です。
その他
データベースのディレクトリ初期化
データベースのディレクトリ初期化は、データベースの領域となるディレクトリを指定するものです。この例では、デフォルト(環境変数PGDATA)のディレクトリに作成します。
シェルコマンド
$ initdb
ディレクトリ指定をするには-Dオプションを用います。