ユーザーのロックと解除

MySQL では作成済みのユーザーをロックして一時的に使用できなくすることができます。ここでは MySQL でユーザーのロックと解除を行う方法について解説します。

(Last modified: )

ユーザーをロックする

ユーザーを削除してしまうと再び使用したい場合には改めて作成する必要がありますが、ユーザーをロックすれば一時的に使用できなくすることができ、またいつでもロックを解除して元のまま使用可能にすることができます。

既存のユーザーをロックするには次の書式を使用します。

ALTER USER user ACCOUNT LOCK

またロックしたユーザーの解除を行うには次の書式を使用します。

ALTER USER user ACCOUNT UNLOCK

それでは実際に試してみます。作成済みのユーザーがロックされているかどうかは mysql.user テーブルの account_locked カラムの値で確認することができます。次のように実行してください。

select user, host, account_locked from mysql.user;

ユーザーをロックする(1)

account_locked カラムの値は Y のユーザーはロックされています。 N のユーザーはロックされていません。

それでは kuma@localhost アカウントをロックしてみます。次のように実行してください。

alter user kuma@localhost account lock;

ユーザーをロックする(2)

改めて mysql.user テーブルで該当ユーザーがロックされているかどうか確認してみると、ロックされていることが確認できます。

ユーザーをロックする(3)

-- --

ではロックされているユーザーを解除します。次のように実行してください。

alter user kuma@localhost account unlock;

ユーザーをロックする(4)

改めて mysql.user テーブルで該当ユーザーがロックされているかどうか確認してみると、ロックが解除されていることが確認できます。

ユーザーをロックする(5)

ロックされたユーザーでMySQLへ接続した場合

ユーザーがロックされるとそのユーザでは MySQL へ接続することができなくなります。では実際にロックされたアカウントを使ってコマンドプロンプトから MySQL コマンドラインツールを起動して接続してみます。

ロックされたユーザーでMySQLへ接続した場合(1)

Access denied for user 'ユーザー名'. Account is locked. というエラーが表示されて接続に失敗しました。

ロックされた状態で新しいユーザーを作成する

ユーザーを作成はしておくけれど必要になるまで使えない状態にしておきたい場合には、ロックした状態でユーザーを作成することができます。書式は次の通りです。

CREATE USER user IDENTIFIED BY 'auth_string' ACCOUNT LOCK

ユーザー名( user )とパスワード( 'auth_string' )を指定してロックした状態でユーザーを作成します。

では実際に試してみます。次のように実行してください。

create user karasu@localhost identified by 'crow' account lock;

ロックされた状態で新しいユーザーを作成する(1)

それではユーザー一覧を取得して確認してみます。

select user, host, account_locked from mysql.user;

ロックされた状態で新しいユーザーを作成する(2)

作成したユーザーがロックされていることが確認できます。

-- --

ユーザーをロックする方法およびロックを解除する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。