MySQLdeユーザ/パスワードに関するクエリ

2021年11月14日

[]で囲まれたところはそれぞれの環境にあったものに置き換えてください。

ユーザ追加

create user `[ユーザ名]`@`[ホスト名]`;

CREATE USER `[ユーザ名]`@`[ホスト名]` IDENTIFIED BY '[パスワード]'

ユーザのみを作る場合とパスワードも指定して作る方法があります。

ユーザに新しいパスワードを設定する

set password for `[ユーザ名]`@`[ホスト名]` = '[パスワード]';

ALTER USER `[ユーザ名]`@`[ホスト名]` IDENTIFIED BY '[パスワード]'

ALTER USER `[ユーザ名]`@`[ホスト名]` IDENTIFIED BY '[現在のパスワード]' REPLACE '[新しいパスワード]'

パスワードの追加方法は大きく2つあります。

一つは「set password」を使う方法です。「for [ユーザ名]」を省略するとログインユーザのパスワードを変更することになります。

二つは「ALTER USER」を使う方法で、こちらはパスワード変更時に現在のパスワードを入力する必要がある場合も考えられています(3行目)。

どちらも結果は同じなので、覚えるなら二つ目の「Alter User」を使った方法を覚えたほうがいい気がします。

パスワード認証方法を確認する

SELECT user, host, plugin FROM mysql.user;

認証方法は認証プラグインによって決まります。MySQL5.7までは「mysql_native_password」だったのですが、MySQL8.0からは「caching_sha2_password」に規定値が変更されています。

これが原因でツールによってはMySQLにログインできなくなることがあります。その場合は認証プラグインを変更することで解決することが出来ます。

ALTER USER '[ユーザ名]'@'[ホスト名]' IDENTIFIED WITH [認証プラグイン名] BY 'パスワード';

ユーザに権限を追加する

GRANT ALL ON `[データベース名]`.`[テーブル名]` TO `[ユーザ名]`@`[ホスト名]`;

「ALL」を変更することで権限の種類を変えることが出来ます。

サイト名URL
MySQL公式https://dev.mysql.com/doc/refman/5.6/ja/grant.html
DBOnlinehttps://www.dbonline.jp/mysql/user/index6.html
参考サイト様