はじめに
Embulkを用いてMySQLDBへ接続を行おうとして以下のようなメッセージが表示されたことはございますでしょうか。
Unable to load authentication plugin 'caching_sha2_password'.
本記事では、上記接続エラーメッセージが表示されたときの対応方法について記載しております。
記事の対象者
- Embulkを用いてMySQLDBへ接続したい方
- 接続先となるMySQLDBのバージョン変更に対応したい方
結論
- 最新版のmysql JDBCドライバーを用意してください
- Embulk実行用のymlファイルに取得したドライバ情報を記載してください
目次
- MySQLDBver8.0の変更点
- ymlファイルの設定内容
- MySQLの設定変更
- おわりに
MySqlDBver8.0の変更点について
MySQLではver8.04よりユーザーの認証方式のデフォルトが「mysql_native_password」から「caching_sha2_password」に変更されました。
SHA-256を使用したより安全なパスワードの暗号化を提供するとともに、キャッシュを使用して同一ユーザの認証処理を高速化しようという、MySQL推奨の認証プラグインとなります。
詳しくは公式ドキュメントを参照してください。
MySQLのバージョン確認
接続先のMySQLのバージョンが不明な場合は、MySQLへクライアント接続した状態で以下のコマンドを実行することで確認することが可能となります。
$ mysql --version
ymlファイルの設定内容
EmbulkにてMySQLのver8.04に接続するためには、ymlファイル上に公式サイトから取得した最新版のMySQL JDBC ドライバ(.jarファイル)を指定することで、ユーザー認証方式がMySQLのVer8.04のデフォルトに合う形で接続することが可能となります。
MySQL JDBCドライバーのダウンロードはこちらからご参照ください。
in:
type: mysql
host: your_mysql_host
user: your_mysql_user
password: your_mysql_password
database: your_mysql_database
table: your_mysql_table
# 以下のようにドライバのパスを指定
driver_path: /.embulk/mysql-connector-java-X.XX.XX.jar
MySQLの設定変更
MySQLの設定ファイル (my.cnfまたはmy.ini) を編集し、デフォルトの認証プラグインをmysql_native_passwordに変更することでEmbulk側の設定を変更せずに対応することが可能となります。
default-authentication-plugin=mysql_native_password
この変更を行った後にMySQLを再起動して変更が有効になります。
おわりに
バージョンが変更されるたびに仕様の変更されることがあるため、どんな変化があったのかを整理することでスムーズな開発が出来るのではないかと考えております。
本記事が、どなたかの役に立てたのであれば幸いです。
拝見頂き、ありがとうございました。