はじめに
データベースを扱う場合、ユーザーの作成と削除が必要になることがよくあります。複数のメンバーがデータベースにアクセスする必要があるチームで作業する場合でも、データベースの権限をシミュレートするためにテストユーザーを作成および削除する場合でも、データベースユーザーの追加と削除の方法を知っておくことは重要です。
この短いガイドでは、MySQLでデータベースユーザーを作成および削除する基本的な方法について説明します。これらのコマンドを習得すれば、データベースアクセスを許可する準備が整い、将来のロール管理の基盤を築くことができます。
MySQLユーザーを作成する方法
MySQLでユーザーを作成することは、他のユーザーと共同作業したり、アクセス権限をテストしたりするために不可欠です。ユーザーを作成するには、前提条件に記載されている権限を持つユーザーでログインする必要があることに注意してください。
基本構文
新しいユーザーを作成するための基本的な構文は比較的シンプルです。`CREATE USER` コマンドを使用し、新しいアカウントのユーザーとホストを指定します。
CREATE USER '<user>'@'<host>';
これにより、作成時にユーザーとホスト以外の詳細を何も設定しない基本的なアカウントが作成されます。
パスワード付きのユーザーを作成する方法
多くの場合、ユーザーを作成する際に認証を設定したいと思うでしょう。これは、`CREATE USER` ステートメントにオプションの IDENTIFIED BY
句を追加することで実現できます。
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でのユーザーロール管理やユーザー認証について、さらに深く掘り下げた参考記事があります。