[MySQL]データベースの作成、ユーザの追加と権限の設定

投稿者: | 2013/08/04

久しぶりの更新です。
前回の記事が3月で止まっていたので随分と休んでしまったようでした。

MySQLでデータベース(DB)を作成・運用する場合、DBやサービスごとに実行ユーザーを作成することが望ましいです。
MySQLをインストールすると、コマンドラインなどで(MySQLの)rootユーザーで操作することになります。

しかし、rootユーザーだと何でもできてしまうため、rootのパスワードが漏洩してしまうと、そのサーバーにインストールしたMySQLの操作が何でも可能になってしまう恐れがあります。特に、PHPなどのプログラムからDBを操作する場合、接続情報(ユーザー名、パスワード、ホスト名、ポート番号)を設定ファイルなどに記述していることが多いため、外部に漏れる可能性もあります。

したがって、通常は権限を制限したユーザーを作成し、そのユーザーでDBを操作することが望ましいです。
例えば、WP_USERというユーザーを作成し、WordpressのDB(WP_DB)のみしか操作できないようにするなどです。

例として、以下のような設定でDBとユーザーを作成し、ユーザーに権限を設定します。

rootでMySQLにログイン

データベース作成

create databaseでデータベースを作成します。

ユーザーの追加と権限の設定

GRANT構文を使います。

権限内容

作成するユーザーに対して、権限を設定します。

  • all privileges ・・・ GRANT(権限の付与)以外の権限を付与
  • alter ・・・ テーブル変更
  • create ・・・ テーブル作成
  • drop ・・・ テーブル削除
  • index ・・・ インデックス作成、削除
  • select ・・・ select文
  • insert ・・・ insert文
  • update ・・・ update文
  • delete ・・・ delete文

権限対象

作成するユーザーに権限が付与される対象を設定します。

  • グローバル権限 ・・・ すべてのデータベースが対象
  • データベース ・・・ 指定したデータベースが対象
  • テーブル ・・・ 指定したデータベースのテーブルが対象

以下のように表します。

作成するWP_USERユーザーは、WP_DBに対して、select, insert, update, deleteのみ許可するので以下のようになります。

もし、権限の付与を間違えてしまった場合は、下記のコマンドで一度権限を削除して再度権限を付与します。

設定の反映

flush privilegesで権限を再度読み込むことで設定が反映されます。

権限の確認

作成したユーザーの存在確認と、そのユーザーの権限が付与されたかを確認します。

WP_USERでログインしてみます。

WP_USERユーザーは、information_schemaとWP_DBのみ扱えることがわかります。
information_schemaはMySQL自身が保持しているデータベースのようです。

最後に

MySQLでデータベースの作成とユーザーの追加・権限の設定ができました。
データベースを扱う場合は、rootユーザーよりも権限を制限したユーザーで操作するようにしましょう。
これはLinuxで一般ユーザーで操作するのと同じです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*