はじめに
データベースを扱う際、ユーザーの作成と削除が必要になることはよくあります。データベースへのアクセスを必要とする複数のメンバーがいるチームで作業する場合でも、データベース権限をシミュレートするためのテストユーザーを作成および削除する場合でも、データベースユーザーを追加および削除する方法を知ることは重要です。
このショートガイドでは、MySQLでデータベースユーザーを作成および削除する基本について説明します。これらのコマンドを使用すると、データベースアクセスを許可する準備が整い、将来のロール管理の基礎を確立できます。
MySQLユーザーを作成するには?
MySQLでユーザーを作成することは、他のユーザーと協力したり、アクセス権と特権をテストしたりするために重要です。ユーザーを作成するには、前提条件に記載されている特権を持つユーザーでログインする必要があることに注意することが重要です。
基本構文
新しいユーザーを作成するための基本構文は比較的簡単です。CREATE USERコマンドを使用し、新しいアカウントのユーザーとホストを指定します。
CREATE USER '<user>'@'<host>';
これにより、作成時にユーザーとホスト以外の詳細を構成せずに、基本アカウントが作成されます。
パスワード付きのユーザーを作成するには?
多くの場合、ユーザーの作成中に認証を構成する必要があります。これを行うには、オプションの IDENTIFIED BY
句を CREATE USER
ステートメントに追加します。
CREATE USER '<user>'@'<host>' IDENTIFED BY '<password>';
これにより、以前と同様に新しいユーザーアカウントが作成され、同時にそのアカウントのパスワードが割り当てられます。後からパスワードを割り当てる方法、またはユーザーのパスワードを変更する方法については、後で説明します。
Unixソケット認証でユーザーを作成するには?
パスワード認証はほとんどのユーザーにとって最も一般的な認証方法ですが、唯一のオプションではありません。MySQLは、ユーザーアカウントで使用するように構成できる、さまざまな内部および外部認証メカニズムを提供しています。例として、Unixソケット認証を使用して新しいアカウントを構成します。
Unixソケット認証は、LinuxまたはUnixライクな環境で使用でき、オペレーティングシステムのアカウントに、MySQL内の同じアカウント名へのアクセス権が追加の認証なしで付与されます。この構成では、MySQL管理者は、オペレーティングシステムのユーザーアカウントが厳密に管理されていることを認識しています。
したがって、オペレーティングシステムに mary
ユーザーがいる場合、Unixソケット認証が定義された認証メカニズムである場合、MySQL内の 'mary'@'localhost'
アカウントにログインできます。これを今すぐ構成しましょう。
ソケット認証には auth_socket
プラグインが必要なため、最初に次のコマンドを入力してプラグインをロードします。
INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';
次に、オペレーティングシステムにあるユーザーアカウントと一致するユーザーアカウントを作成します。この例では、上記で説明した mary
アカウントを使用します。オペレーティングシステム名と一致しない名前を使用すると、このユーザーを使用して認証できなくなります。
ソケット認証でユーザーを作成するには、使用する認証プラグインを指定するために、IDENTIFIED WITH
句(以前に使用した IDENTIFIED BY
句とは異なります)を使用する必要があります。
CREATE USER 'mary'@'localhost' IDENTIFIED WITH auth_socket;
これで、オペレーティングシステムの mary
ユーザーから 'mary'@'localhost'
MySQLユーザーに認証できるようになります。mary
としてログインしたら、ユーザー名またはパスワードを入力せずにデータベースに接続します。
mysql
構成したUnixソケット認証を介して自動的にサインインされるはずです。
MySQLユーザーを削除するには?
もはや目的を果たさないユーザーアカウントを保持することはセキュリティリスクです。DROP USER
コマンドを使用すると、アカウントを簡単に削除できます。
基本構文は次のようになります。
DROP USER '<user>'@'<host>';
したがって、'mary'@'localhost' ユーザーを削除するには、次のように入力します。
DROP USER 'mary'@'localhost';
存在しないユーザーを削除しようとすると、エラーが発生します。
ERROR 1396 (HY000): Operation DROP USER failed for 'mary'@'localhost'
これを回避するには、アカウント名の前に IF EXISTS 句を追加できます。ユーザーが存在する場合は削除されます。存在しない場合は、警告のみが表示されます。
Query OK, 0 rows affected, 1 warning (0.00 sec)
結論
このクイックガイドでは、MySQLデータベースのユーザーを作成および削除する基本と、いくつかの追加オプションについて説明しました。
ユーザーが作成されたら、MySQLのユーザーロール管理とユーザー認証についてさらに深く掘り下げた有益な記事が追加されています。