Mysql – What’s causing this ERROR 2000 (HY000): Unknown MySQL error

errorsMySQL

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 server is compiled with OpenSSL.
  • The working client is compiled with OpenSSL.
  • The client that can't connect is compiled with yaSSL.

The user I was trying to connect with used the sha256_password authentication plugin. When I dropped and re-created the user with mysql_native_password instead, the problem went away and I can connect from all clients. It appears that the sha256_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.)