MySQLでCREATE or DROPできる権限レベル

データベースのCREATEを行える権限の付与について調べていたとき、 どのようなレベルの権限を付与すると可能なのか明示的に書かれている ものを見つけられなかったので書いてみる。 (以下、CREATEについて書いているがDROPも同様)

あるデータベースAをcreateするためには 次のどちらかの権限がついている必要がある

  • *.*: グローバル権限
    • どのデータベースでも作ることができる
    • GRANT文: GRANT CREATE ON *.* TO user_name
  • A.*: データベース権限
    • Aというデータベースのみ作ることができる
    • GRANT文: GRANT CREATE ON A.* TO user_name

逆に次の権限レベルでは作成することができない

  • A.table1: テーブル権限
    • Aというデータベースを作ることはできないが、table1というテーブルを作ることはできる
    • GRANT文: GRANT CREATE ON A.table1 TO user_name

まとめ

グローバル権限もしくは、対象のデータベース名が含んだデータベース権限が必要

参考情報