LoginSignup
0
0

【MySQL】ver8.0へ切り替わった時のEmbulk接続

Last updated at Posted at 2024-02-21

はじめに

Embulkを用いてMySQLDBへ接続を行おうとして以下のようなメッセージが表示されたことはございますでしょうか。

メッセージ例
Unable to load authentication plugin 'caching_sha2_password'.

本記事では、上記接続エラーメッセージが表示されたときの対応方法について記載しております。

記事の対象者

  • Embulkを用いてMySQLDBへ接続したい方
  • 接続先となるMySQLDBのバージョン変更に対応したい方

結論

  • 最新版のmysql JDBCドライバーを用意してください
  • Embulk実行用のymlファイルに取得したドライバ情報を記載してください

目次

  1. MySQLDBver8.0の変更点
  2. ymlファイルの設定内容
  3. MySQLの設定変更
  4. おわりに

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ドライバーのダウンロードはこちらからご参照ください。

サンプルymlファイル
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側の設定を変更せずに対応することが可能となります。

cnfまたはiniファイル
default-authentication-plugin=mysql_native_password

この変更を行った後にMySQLを再起動して変更が有効になります。

おわりに

バージョンが変更されるたびに仕様の変更されることがあるため、どんな変化があったのかを整理することでスムーズな開発が出来るのではないかと考えております。
本記事が、どなたかの役に立てたのであれば幸いです。
拝見頂き、ありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0