MySql changed the default authentication protocol in MySQL 8, so I would suggest using the older (pre-8.0) client if possible. If you want to use the MySQL 8 client then you need to pass along default-auth=mysql_native_password in some fashion (which switches it to use the older auth method by default).
The same issue exists using the MySQL 8 client and connecting to an older version of MySQL (see https://bugs.mysql.com/bug.php?id=90994). i.e., MySQL also broke themselves here as well.
I stumbled across this post from googling the same error but within SQL Workbench v8.0.22.
The solution for SQL WorkBench, which uses the Connector/C++, is to set the following option/value pair under connection > advanced > Others: defaultAuth=mysql_native_password
Note: There is no dash in between “default” and “Auth” for the Connector/C++ per this page
defaultAuth
The name of the authentication plugin to use. This option corresponds to the MYSQL_DEFAULT_AUTH option for the mysql_options() C API function. The value is a string. This option was added in Connector/C++ 1.1.5.