MySQLとSequel PROのロゴ

Sequel ProからMySQLにログインしようとしたら、Sequel Pro側で下記のエラーが出てログインできませんでした。

Authentication plugin ‘caching_sha2_password’ cannot be loaded: dlopen(/usr/local/lib/plugin/caching_sha2_password.so, 2): image not found

結論から言うと、MySQL8.0からデフォルトの認証方式が変更され、Sequel Pro側がそれに対応していなかったことが原因でした。

MySQL側の認証方式を「caching_sha2_password」から「mysql_native_password」に戻すことで、Sequel Proに無事ログインすることができました。

Sequel Pro側が、MySQLの新しい認証方式(mysql_native_password)に対応するまでの一時的な処理にしたいので、設定方法を記しておきたいと思います。

環境について

・Mac OS High Sierra 10.13.6
・MySQL 8.0.12

ターミナルからアクセス

まず、MacのターミナルからMySQLにアクセスできるかどうかを確認しましょう。

ここでアクセスできない場合は、パスワードが間違っているなど、他の要因が考えられます。

$ mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 8.0.12 Homebrew

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

無事にターミナルからアクセスできました。これでパスワードの問題がないことが確認できました。

公式ドキュメントを確認

今回の認証方式の変更について、公式ドキュメントで言及されていたので抜粋します。

caching_sha2_password as the Preferred Authentication Plugin

 

The caching_sha2_password and sha256_password authentication plugins provide more secure password encryption than the mysql_native_password plugin, and caching_sha2_password provides better performance than sha256_password. Due to these superior security and performance characteristics of caching_sha2_password, it is as of MySQL 8.0 the preferred authentication plugin, and is also the default authentication plugin rather than mysql_native_password. This change affects both the server and the libmysqlclient client library:

デフォルトの認証方式(プラグイン)が「mysql_native_password」から「aching_sha2_password」に変更されたことが書いてありますね。

より安全性の高いシステムであることは有り難いのですが、クライアントサイドのアプリ側がそれに対応していないのは不便ですね。

そこで、デフォルトの認証方式を「mysql_native_password」に戻していきたいと思います。

認証方式の変更

ターミナルからMySQLにログインします。

$ mysql -u root

ログインができたら、MySQLに登録してあるユーザー毎の認証方式を確認します。

mysql> SELECT host, user, plugin FROM mysql.user;
+-----------+------------------+-----------------------+
| localhost | root             | caching_sha2_password |
+-----------+------------------+-----------------------+

今回、使用したいユーザーであるrootの認証方式が「caching_sha2_password」であることが確認できました。

以下のコマンドで、MySQL側の認証方式を「caching_sha2_password」から「mysql_native_password」に戻します。

mysql> ALTER USER 'root'@"localhost" IDENTIFIED WITH mysql_native_password BY '{}'

これでrootユーザーの新しい認証方式が作成されきました。先ほどと同じコマンドで、ユーザー毎の認証方式を確認してみましょう。

mysql> SELECT host, user, plugin FROM mysql.user;
+-----------+------------------+-----------------------+
| localhost | root             | mysql_native_password |
+-----------+------------------+-----------------------+

最後に、この新しい設定をMySQLに反映します。

mysql> FLUSH PRIVILEGES;

Sequel Proでアクセス

それでは、もう一度Sequel Pro側からアクセスしてみましょう。

設定していたホスト名(localhostは127.0.0.1)、ユーザー名、パスワード(設定していない場合は空白)を入力し、接続テストをクリックします。

接続が成功しましたね!

デフォルトの設定を変更

最後に、ユーザー毎の変更ではなく、全ユーザー共通であるデフォルトの認証方式の変更方法をご紹介します。

デフォルトの認証方式を変更されたい方は、~etc/my.cnfに以下のコードを追記してください。(my.cnfファイルが存在しない場合は新たに作成しましょう。)

[mysqld]
default_authentication_plugin=mysql_native_password

以上で設定完了です!もちろん、最新の認証方式ではないぶん、システムセキュリティは弱くなってしまうので、あくまでもSequel Proが対応するまでの一時的な処理として覚えておきましょう。

PROFILE

はじめまして、大阪のWeb制作会社Yuapです。「Yuap(ユアプ)」とは英語で「あなたのプランナー」という、Your Plannerの頭文字をとった社名です。 ホームページ制作|Webシステム開発|Webコンサルティングなどの業務を通じて、みなさまの事業の成長に貢献できるようなプランナーになれるよう、日々チャレンジしております。

※お問い合わせ・お見積りは無料です。 IT|ホームページ|Webシステムのことならなんでもお気軽にご相談ください。お問い合わせはこちらから。