I stumbled upon this question when I myself had encountered this error. I could finally figure out the configuration.
- I didn't touch anything in /etc/mysql/my.cnf which already has bind_address = 127.0.0.1. So only localhost can connect.
- I use OpenSSH server. So in its config file /etc/ssh/sshd_config I changed from no to yes the param responsible for TCP forwarding, thus AllowTcpForwarding yes.
Finally I have the following entered in MySQL WorkBench.
- SSH Hostname: 192.168.0.8:22 (my SSH server listens to port 22)
- SSH Username: sshuser
- SSH Key File: *C:\Users\windowsuser\.ssh\id_rsa* (should be private key, even though it says public)
- MySQL Hostname: 127.0.0.1 (this should not be changed, since MySQL server by default is bound to localhost only which I didn't change)
- MySQL Server Port: 3306 (also default)
- Username: root
The only remaining thing for you is to configure correctly your SSH server to work with keys rather than passwords. Hope this will help someone.
This has nothing to do with the MySQL server, so no troubleshooting on that side should be needed. It is also unrelated to usernames, machine names, and passwords.
C:\>perror 10055
Win32 error code 10055: An operation on a socket could not be performed because
the system lacked sufficient buffer space or because a queue was full.
The MySQL server is not returning this error. Windows, on the client side, is generating this error locally, when you're trying to connect, because of a resource shortage on the client system. Of course, a reboot of the client would clear this right up... until you hit the limit again.
The most likely cause of this would be that you have an application running on those same machines is not releasing system resources properly... It wouldn't necessarily even have to be the application that's accessing MySQL but that's probably a good bet if that's the only application where you're experiencing problems.
This command, run on the client that is experiencing the problems, will list all of your currently open network sockets, as well as the name of the application that owns them:
C:\netstat -a -b -n
Running this on a machine that is unable to connect should give you an idea of which application is causing the problem because you will likely see an inordinate amount of sockets owned by one application.
The Windows error is also known as WSAENOBUFS
.
Best Answer
This started off as a comment but it's getting a bit long.
Perhaps you could provide a better description of what it is you actually want rather than simply say it's like something else.
If you want multiple clients to use the same connection, then it must be implemented in the DBMS, otherwise you have no session management. Further you need to advise how you intend dealing with issues of state spanning more than a single request/response (i.e. transactions).
It would also be helpful to know why you want it. MySQL has a very different setup cost and per-session overhead cost compared to PostgreSQL - why do you think it needs it, and why you think it would actually yeild any benefit.