MySQLでユーザ作成 GRANTでユーザ作成と権限設定を同時に行う方法
  • facebookページ
  • twitterページ
  • 2019.12.27

    MySQLでユーザ作成 GRANTでユーザ作成と権限設定を同時に行う方法

    MySQL 5.7.28でのユーザ作成についてまとめています。

    以下、データベースとして、MySQLのサンプルデータベースEmployeesを使っています。

    サンプルデータベースのインストール方法は、下記を参考にしてください。

    【関連記事】
    MySQLの入門には、GUIツールで慣れ、サンプルDBを使った学習が効果的

    MySQLでユーザを作成するには、create user

    MySQLのrootアカウントでログインします。※rootのパスワードはmy-secret-pwに設定されている前提。

    rootアカウント以外でも、CREATE USER権限を持つアカウントならユーザ作成が可能です。

    上記のSQLを実行すると、localhost上のユーザuser0を、パスワード’user0_password’で設定して作成します。

    現在のユーザ名一覧を確認してみましょう。

    rootやmysqlのシステムアカウントに加えて、先ほど作成したuser0が追加されていることが確認できました。

    いったんmysqlコマンドをexitで抜けて、mysqlコマンドで、ユーザ名をuser0、パスワードをuser0_passwordに指定してログインできることを確認してみましょう。

    問題なくMySQLサーバに接続できました。

    ※以降のSQLは、MySQLのrootアカウントで接続しなおして実行してください。

    作成したユーザに権限を設定するにはGRANTを使用

    まずは、作成済みのユーザに、デフォルトで設定されている権限を確認してみます。

    「GRANT USAGE」は、権限がないことを表します。localhost上のユーザuser0は、全データベースの全テーブル(*.*)に対して、権限がない(GRANT USAGE)ことがわかりました。

    user0に権限を付与してみましょう。

    上記のSQLは、localhost上のuser0に、データベースemployeesの全テーブル(employees.*)に対して、すべての権限(all)を付与します。

    show grantsで確認すると、データベースemployeesへの権限が付与されていることを確認できます。

    なお、与えた権限を剥奪するには、revokeを使います。

    上記SQLを実行すると、localhost上のuser0アカウントから、employeesデータベースの全テーブルに対する権限を剥奪します。

    先ほどGRANTで付与した権限が削除されていることが確認できました。

    ユーザ作成と権限付与を同時に行う方法

    SQL1行で、ユーザ作成と権限付与を同時におこなうことも可能です。

    上記SQLは、localhost上にuser1というアカウントをパスワード”user1_password”で作成し、employeesデータベースの全テーブル(employees.*)に、全権限(ALL)を付与します。

    なお、5.7の古いバージョンでは、grantを使ってユーザ追加ができないケースがあるようです。

    参考)mysql5.7 でユーザ追加の方法が変わったのでメモ – Qiita

    まとめ

    ポテパンダの一言メモ
    • MySQLのユーザ作成は、create userを使う。ユーザへの権限付与にはgrantを使用する。
    • 作成済みのユーザ一覧は、select user from mysql.users で確認する。
    • ユーザの権限は、show grantsで確認する。
    • grantを使って、ユーザ作成と同時に、権限付与をおこなうことも可能。


    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE