今回は、MySQL Workbench – Server Administaration の中で、唯一マトモな感じがする MySQL アカウント(ユーザー)の追加について説明使用と思う。ただし、この機能を利用するには、管理者設定(厳密にはSSHやsudoの設定を除くMySQLの接続部分のみ。ただし、MySQL Workbench Community では不要 が必要だ。

 

※ SSH や sudo の設定が正しく行われていなくてもキチンと動作するので、セキュリティの低下は心配しなくてもよいだろう。
※ MySQL Workbench Community では、設定方法が大きく変わっています。
MariaDB に対しても使用できます。

 

 

アカウントの作成

MySQL Workbench Community では、root コネクションで接続してから操作を行います。

 

MySQL Workbench Community 6.2 アカウント操作

 

それ以外は、従来の操作と同じです。

 

MySQL Workbench の場合、トップ画面から『Manage Security』 をクリックする。

 

MySQL Workbenchによるアカウント追加 アカウント画面選択

 

すると、インスタンスの選択画面が出てくるので、それを選べば次の画面が表示される。

 

MySQL Workbenchによるアカウント追加 アカウント情報入力

 

左下の『Add Account』(アカウント追加)のボタンを押せば『Login』タブが表示されるので、必要項目を入力する。

 

  • 『Login Name』 … MySQLアカウント名(MySQLに追加する接続ユーザー名)。日本語や記号などはお勧めできない。
  • 『Password』 … パスワード。日本語や記号などはお勧めできない。
  • 『Confirm Password』 … パスワード(確認用)。当然『Password』で指定したモノと同じでなければならない。
  • 『Limit Connectivity to Hosts Matching』 …ホスト名。IPアドレスやワイルドカード(『%』任意の文字列や『_』一文字)も使用可能。

 

以上の入力が終われば右下の『Apply』ボタンを押せばアカウント追加は完了だ。

 

※ ただし、このままでは使用できないので、権限の付与を行う必要がある。

 

 

アカウントに管理者権限を与える

作成したアカウントに管理者権限をあたえる場合には、『User Accounts』(アカウントリスト)を選択した状態で、『Administrative Roles』タブを選択する。

 

※ 勿論、一般ユーザーに対しては管理者権限を与えてはいけない。特に、PHPなどで作成したWebアプリケーションなどに権限を与えると、攻撃を受けた場合に深刻な被害を受ける場合もあるので注意しよう。

 

MySQL Workbenchによるアカウント追加 アカウント権限設定

 

チェックボックスをクリックすれば、権限を与える事ができる。右側のリスト『Global Privileges~』は使用できるSQLコマンドなどが情報として表示されるだけだ。

 

※ チェックした項目は管理者権限であるため、全てのデータベースやデーモン自体が対象になる。

 

  • 『DBA』 … 全てに対する権限付与
  • 『MaintenanceAdmin』 … サーバー(デーモン)のメンテナンスに必要な権限の付与
  • 『ProcessAdmin』 … プロセス(実行中のプログラム)に対するアクセス/監視/中断する権限付与
  • 『UserAdmin』 … アカウントの作成/パスワードのリセットなどに関する権限付与
  • 『SecurityAdmin』 … アカウントの権限剥奪/付与やデータベースに対するアクセス権なのを変更する権限付与
  • 『MonitorAdmin』 … 監視サーバーに対する最小限の権限付与
  • 『DBManager』 … 全てのデータベースに関する権限付与
  • 『DBDesigner』 … 全てのデータベーススキーマに対する作成/リバースエンジニアリングに対する権限付与(構造解析やバグ、セキュリティーホールの検証などの専門家用の権限)
  • 『ReplicationAdmin』 … 分散型データベース(クラスター化されたデータベース)のセッティング及び、レプリケーションに関する最小権限を付与
  • 『BackupAdmin』 … 全てのデータベースに対するバックアップに関する最小権限を付与

 

全ての管理者権限を与えるには、『DBA』をチェックすればよいだけだが、おそらく、全ての権限が必要な人は存在しないと思われる。

 

権限の付与が終わった後には、必ず右下の『Apply』ボタンを押しておこう。

 

 

アカウントにリミッターを設定する

作成したアカウントにリミッターを設定する場合には、『User Accounts』(アカウントリスト)を選択した状態で、『Account Limits』タブを選択する。

 

MySQL Workbenchによるアカウント追加 制限設定

 

このタブではアカウントに対する使用回数の制限などが行える。

 

※ デフォルトの『0』は制限なしを表している。

 

  • 『Max. Queries』 … 1時間あたりでの実行可能なSQLコマンド数
  • 『Max. Updates』 … 1時間あたりでの実行可能な更新関連数(挿入や削除も含む)
  • 『Max. Connections』 … 1時間あたりでの上限接続数(同じアカウントを利用していれば、コマンドやAPIなどの違いは無い)
  • 『Concurrent Connections』 … アカウントに対する同時接続数(同じアカウントを利用していれば、コマンドやAPIなどの違いは無い)

 

権限の付与が終わった後には、必ず右下の『Apply』ボタンを押しておこう。

 

(どうでも良い話だが、Max の後のピリオドは省略を意味するモノで、誤字ではありません。この英文を作成した人は、よほど細かい事を気にするタイプなんでしょうねェ。こんな英文を見たのは、ずいぶん久しぶりな気がする。^^;)

 

 

アカウントにデータベースのアクセス権を設定する

アカウントに対するデータベースの操作権の設定。一般ユーザーアカウントに対する設定は大抵コレに該当するハズだ。上位のタブに『Schema Privileges』のタブがあるので、先ずはソコをクリックしよう。

 

※ このタブは、アカウントのデータベースに対する権限設定である。

 

MySQL Workbenchによるアカウント追加 データベース権限設定ユーサー一覧

 

左側の『Users』(アカウント一覧)の中から1つを選択し、右側の『Add Entry…』ボタンを押すと次の様なダイアログが表示される。

 

MySQL Workbenchによるアカウント追加 データベース権限設定

 

このダイアログをみれば分かると思うが、どのサーバーにあるデータベースかを設定する。

※ この例では、同一サーバー(localhost)の『test』データベースを指定してある。

 

サーバー指定部

  • 『Any Host』 … ワイルドカードの『%』と同義。全てのサーバーを対象にする。
  • 『Host matching pattern or name』 … ワイルドカード(『%』任意の文字列や『_』一文字)使用してサーバー指定する。
  • 『Selected host』 … プルダウンから1つのサーバー指定する。

 

スキーマ(データベース)指定部

  • 『Any Schema』 … ワイルドカードの『%』と同義。全てのデータベースを対象にする。
  • 『Schema matching pattern or name』 … ワイルドカード(『%』任意の文字列や『_』一文字)使用してデータベース指定する。
  • 『Selected schema』 … リストから1つのデータベース指定する。

 

入力し終わったら『OK』ボタンを押す。

 

すると、アカウントに対する対象データベース権限を指定できるようになる。

 

MySQL Workbenchによるアカウント追加 データベース詳細権限設定

 

データ操作に関する権限(Object Rights)

  • 『SELECT』 … SQL文の『select』などに該当。データ取得(検索)権限。
  • 『INSERT』 … SQL文の『insert』などに該当。データ登録権限ほか、修復権限などのメンテナンスにも必要な権限。
  • 『UPDATE』 … SQL文の『update』などに該当。データ更新権限。
  • 『DELETE』 … SQL文の『delete』などに該当。データ削除権限。
  • 『EXECUTE』 … SQL文の『call』などに該当。プロシージャやユーザー定義関数などを実行する権限。
  • 『SHOW VIEW』 … SQL文の『show create view』などに該当。ビューの内部を見ることができる権限。

 

データベース構造に関する権限(DDL Rights)

  • 『CREATE』 … SQL文の『create table』などに該当。テーブルやデータベースの作成権限。
  • 『ALTER』 … SQL文の『alter table』などに該当。テーブルの構想変更権限。(要『INSERT』『CREATE』権限)
  • 『REFERENCES』 … 現在未使用。
  • 『INDEX』 … SQL文の『create index』などに該当。インデックスの作成/破棄権限。
  • 『CREATE VIEW』 … SQL文の『create view』などに該当。ビューの作成権限。
  • 『CREATE ROUTINE』 … SQL文の『create procedure』などに該当。プロシージャやのユーザー定義関数の作成権限。
  • 『ALTER ROUTINE』 … SQL文の『alter procedure』などに該当。プロシージャやのユーザー定義関数の変更/破棄権限。
  • 『DROP』 … SQL文の『drop table』などに該当。テーブルやデータベースの破棄権限。
  • 『TRIGGER』 … SQL文の『create trigger』などに該当。トリガの作成/破棄権限。

 

その他の権限(Other Rights)

  • 『GRANT OPTION』 … 別アカウント(管理者以外も含む)から該当アカウントに対する権限変更権限。
  • 『CREATE TEMPORARY TABLES』 … SQL文の『create temporary table』などに該当。一時テーブル作成権限。
  • 『LOCK TABLES』 … SQL文の『lock tables』などに該当。テーブルのロック権限。(排他制御)

 

変更が終わった場合は『Save Changes』ボタンを押すと完了。

 

その他のボタン

  • 『Select “ALL”』 … データベースに関する全ての権限をチェックする。(当然『GRANT OPTION』は除外)
  • 『Unselect “ALL”』 … データベースに関する全ての権限チェックを外す。
  • 『Revert』 … 保存せずに元に戻す。

 

 

総評

どうだっただろうか?
一見、アカウントに関する権限が、全て設定可能な様に思える。
もしも複雑な権限管理を行っているのなら、確認が楽であると言う点においては、充分有益であると言えるだろう。
とりあえずこの機能に関する不具合などは見つかっていないので、使ってみるてはどうだろうか?