I have a MySQL server with version 5.6.12-log (it's running on OpenSUSE). I can connect to it from another server (CentOS 6) using:
mysql -h **** -u **** --port **** -p
It prompts me for my password and connects just fine. The client version is "Ver 14.14 Distrib 5.6.12, for Linux (x86_64) using EditLine wrapper."
However, from another server (running CentOS 7), using the same command, I get the following error after entering my password:
ERROR 2000 (HY000): Unknown MySQL error
This error is useless. There is nothing in the client machine logs that indicate the cause of the failure. However, I do know that the MySQL server is at least receiving the connect request because it logs a warning about the Reverse DNS lookup not matching. It's just a warning—not the cause of this problem—but it proves that firewalls and/or network configurations aren't blocking the connection. There is nothing else in the MySQL server log (or error log) that indicates the cause of the failure. This client version is "Ver 14.14 Distrib 5.6.23, for Linux (x86_64) using EditLine wrapper."
Help??? I'm lost here. In 10+ years of MySQL admining, I've never seen this error before. I don't even know where to begin.
Best Answer
Well I figured it out, and it isn't pretty. I guess I'll have to file a bug with MySQL.
The user I was trying to connect with used the
sha256_password
authentication plugin. When I dropped and re-created the user withmysql_native_password
instead, the problem went away and I can connect from all clients. It appears that thesha256_password
plugin doesn't work if the server and client are compiled against different SSL providers. (It might not even work with yaSSL at all.)