新しい MySQL ユーザーの追加が簡単に: 完全ガイド
このチュートリアルでは、新しいユーザーを MySQL に追加し、MySQL データベースにさまざまなタイプの権限を付与する方法を説明します。
MySQL を初めて使用する場合、または新しいユーザーを追加してアクセス権限を付与する方法を再確認する必要がある場合は、ここが正しい場所です。 MySQL サーバーを使用すると、多数のユーザー アカウントを作成し、適切な権限を付与してユーザーがデータベースにアクセスして管理できるようになり、許可されたユーザーのみが特定のアクションを実行できるようになります。
したがって、MySQL をサーバーにインストールしたら、データベースと追加のユーザー アカウントを作成する必要があります。このガイドでは、新しい MySQL ユーザーを追加し、必要なアクセス権限を付与する手順を説明します。
このガイドに示されているコマンドを実行するには、まず、MySQL root アカウントを使用して MySQL サーバーにログインする必要があります。
mysql -u root -p
新しい MySQL ユーザーを作成する方法
CREATE USER
ステートメントは、MySQL データベース サーバーに新しいユーザーを作成します。 ステートメントの基本的な構文は次のとおりです。
CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';
上記の構文の username
と password
を目的のユーザー名とパスワードに置き換えます。
ユーザーがローカルホスト (「このコンピュータ」を意味する) からのみ MySQL Server に接続できるようにする場合は、hostname
を localhost
に設定します。ユーザーが任意のホストから接続できるようにする場合は、ホスト名として %
ワイルドカードを使用します。
たとえば、次のコマンドを使用して、名前が james
、パスワードが MyStrongPass123
のユーザーを作成します。
CREATE USER 'james'@'localhost' IDENTIFIED BY 'MyStrongPass123';
ただし、このユーザーは、追加の権限が付与された場合にのみ MySQL データベースを操作できるようになります。
MySQL ユーザーに権限を付与する方法
新しいユーザーの作成に成功したら、この新しいユーザーに権限を付与できます。ほとんどの場合、アカウントがアクセスできる特定のデータベースに基づいて MySQL ユーザーに権限を与えます。
ユーザー アカウントには複数の種類の権限を付与できます。MySQL でサポートされる権限の完全なリストは、ここで確認できます。
ALL PRIVILEGES
– ユーザー アカウントにすべての権限を付与します。ALTER
– ユーザーはテーブルまたはデータベースの構造を変更できます。CREATE
– ユーザー アカウントはデータベースとテーブルを作成できます。DROP
– ユーザー アカウントはデータベースとテーブルを削除できます。DELETE
– ユーザー アカウントは、特定のテーブルから行を削除できます。INSERT
– ユーザー アカウントは、特定のテーブルに行を挿入できます。SELECT
– ユーザー アカウントはデータベースの読み取りを許可されます。UPDATE
– ユーザー アカウントはテーブル行を更新できます。
ユーザーに MySQL データベースへのアクセスを提供し、権限を与えるには、通常、次の GRANT
ステートメントを使用する必要があります。
GRANT permission_type ON privilege_level TO 'username'@'hostname';
たとえば、ユーザー james
に jamesdb
データベースに対するすべての権限を付与するには、次のコマンドを使用します。
GRANT ALL PRIVILEGES ON jamesdb.* TO 'james'@'localhost';
ただし、jamesdb
データベースに対する SELECT
権限と INSERT
権限のみをユーザー james
に付与するには、次のように入力します。
GRANT SELECT, INSERT ON jamesdb.* TO 'james'@'localhost';
さらに、データベース全体ではなく、単一のテーブルのみへのアクセスを許可したい場合は、以下のように実現できます。
たとえば、employees
データベースの salaries
テーブルに対してのみ、ユーザー james
に SELECT
権限を付与してみましょう。
GRANT SELECT ON employees.salaries TO 'james'@'localhost';
新しい MySQL スーパーユーザーの作成
状況によっては、MySQL root ユーザーと同様の権限を持つスーパーユーザーを作成する必要がある場合があります。
したがって、ユーザーに MySQL ルート ユーザーと同じ権限を付与するには、次のコマンドを使用します。これにより、localhost
経由で接続するユーザー james
にグローバル権限が付与されます。
GRANT ALL ON *.* TO 'james'@'localhost' WITH GRANT OPTION;
MySQL ユーザー アカウントのパスワードを変更する
localhost
から NewStrongPass123
に接続する james
ユーザーのパスワードを変更するとします。次の SQL ステートメントを実行する必要があります。
ALTER USER 'james'@'localhost' IDENTIFIED BY 'NewStrongPass123';
上記の SQL ステートメントで、james
をデータベース ユーザーに変更し、localhost
をユーザーのホストに変更してください。
さらに、MySQL の root パスワードを忘れてリセット方法がわからない場合は、この件に関するガイドを参照してください。
MySQL のユーザーの 権限を表示する
MySQL では、SHOW GRANTS
コマンドを使用して、ユーザーのすべての許可情報を表示できます。いくつか例を挙げてみましょう。
次のステートメントは、SHOW GRANTS
ステートメントを使用して、現在のユーザーに付与されている権限を表示します。
SHOW GRANTS;
MySQL ユーザーの許可を表示するには、ユーザー名を指定しながら SHOW GRANTS
を使用します。
SHOW GRANTS FOR 'james'@'localhost';
MySQL ユーザー アカウントから権限を取り消す
ユーザー アカウントから 1 つ以上の権限を取り消す構文は、権限を付与する場合とほぼ同じです。
jamesdb
データベースに対するユーザー james
から権限を取り消す必要がある場合は、権限を付与するときに使用したものと同様の構文を適用します。
REVOKE ALL PRIVILEGES ON jamesdb.* FROM 'james'@'localhost';
MySQL からユーザーを削除
権限を取り消す代わりに、そのユーザーを削除することもできます。したがって、次のコマンドを使用してデータベース ユーザーを削除できます。
DROP USER 'james'@'localhost';
上記のコマンドは、ユーザー james
とそのすべての権限を削除します。
変更を保存する
最後のステップとして、権限を更新または変更するたびに FLUSH PRIVILEGES
コマンドを使用します。
FLUSH PRIVILEGES;
結論
新しい MySQL ユーザーを追加してアクセス権限を付与することは、データベースを管理し、承認されたユーザーのみが特定のアクションを実行できるようにするために重要です。このチュートリアルを完了すると、新しいユーザーを追加し、MySQL データベースにさまざまな権限を付与する方法がわかるはずです。
セキュリティを強化するために、ユーザーには常に強力で一意のパスワードを使用し、必要に応じて権限を取り消すか変更することを検討してください。少し練習すれば、すぐに MySQL ユーザーの追加と管理のプロになれるでしょう。
ご質問やご意見がございましたら、お気軽にコメントください。