ウェブサイト検索

新しい 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';

上記の構文の usernamepassword を目的のユーザー名とパスワードに置き換えます。

ユーザーがローカルホスト (「このコンピュータ」を意味する) からのみ MySQL Server に接続できるようにする場合は、hostnamelocalhost に設定します。ユーザーが任意のホストから接続できるようにする場合は、ホスト名として % ワイルドカードを使用します。

たとえば、次のコマンドを使用して、名前が 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'; 

たとえば、ユーザー jamesjamesdb データベースに対するすべての権限を付与するには、次のコマンドを使用します。

GRANT ALL PRIVILEGES ON jamesdb.* TO 'james'@'localhost';

ただし、jamesdb データベースに対する SELECT 権限と INSERT 権限のみをユーザー james に付与するには、次のように入力します。

GRANT SELECT, INSERT ON jamesdb.* TO 'james'@'localhost';

さらに、データベース全体ではなく、単一のテーブルのみへのアクセスを許可したい場合は、以下のように実現できます。

たとえば、employees データベースの salaries テーブルに対してのみ、ユーザー jamesSELECT 権限を付与してみましょう。

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 ユーザーの追加と管理のプロになれるでしょう。

ご質問やご意見がございましたら、お気軽にコメントください。

関連記事: