MySQL v8.0 ClientからProxySQLを使用する際の注意
公式でも言及されていることですが、ProxySQLはそのコントロール配下にMySQL v8.0を置くことは可能なものの、MySQL 8.0.4からのデフォルト認証方式であるcaching_sha2_passwordには対応しておりません。
MySQL 8.0 · sysown/proxysql Wiki · GitHub
そのため、何も気にせずMySQL v8.0のクライアントから接続すると、以下のように認証が正しく行われません。
mysql --host 127.0.0.1 --port 6033 --user admin_user -p Enter password: <正しいパスワードを入力してEnter> ERROR 1045 (28000): ProxySQL Error: Access denied for user 'admin_user'@'%' (using password: NO)
解消するにはまずサーバ側に既存の認証方式であるmysql_native_passwordを各所設定します。
mysql> select user, plugin from user where user = 'admin_user'; +-------------+-----------------------+ | user | plugin | +-------------+-----------------------+ | admin_user | mysql_native_password | +-------------+-----------------------+ 1 row in set (0.21 sec) mysql> show variables like 'default_auth%'; +-------------------------------+-----------------------+ | Variable_name | Value | +-------------------------------+-----------------------+ | default_authentication_plugin | mysql_native_password | +-------------------------------+-----------------------+ 1 row in set (0.18 sec)
そして接続の際にオプション"--default-auth=mysql_native_password"を付与することで、正しく接続できるようになります。
mysql --host 127.0.0.1 --port 6033 --user admin_user -p --default-auth=mysql_native_password