Tech Blog

MySQLの認証について

2021-02-05

MySQLの認証方式を紹介していきます。

caching_sha2_password

8.0ではデフォルトの認証方式となります。

CREATE USER junpeko@localhost IDENTIFIED WITH cacheing_sha2_password BY 'abcdeF1$';

デフォルト設定のままの場合、WITH cacheing_sha2_passwordは指定しなくても問題ありません。

mysql_native_password

5.7まではデフォルトの認証方式でした。

CREATE USER takuya@localhost IDENTIFIED WITH mysql_native_password BY 'abcdeF1$';

Laravelはこれにしないとマイグレーションで失敗しますね。

auth_socket

auth_socketを使用すると、OSのユーザー名と同じ名前のMySQLアカウントでパスワードを 入力せずにログインできます。

例えばvpsuserというOSの一般ユーザーがある場合にMySQLで以下の様にユーザーを作成したとします。

INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';
CREATE USER vpsuser@localhost IDENTIFIED WITH auth_socket;

この場合に、vpsuserからは、 パスワードもホスト名も指定することなしに、mysqlにログイン出来る様になります。

※ UNIXソケットを使用した接続でのみ有効なので、 mysqldとクライアントが同じサーバー内でのみ接続できます。

設定の確認

SELECT user, host, plugin from mysql.user;