我启动了docker mysql容器,并试图使用mysql命令在docker外部连接它,但得到了错误。
$ mysql -uroot -proot
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
这是因为如果没有指定协议或主机参数,mysql clinet会使用unix socket协议作为默认协议值来连接mysql服务器,但mysql docker容器是在tcp socket上监听的。
解决方法
$ mysql -uroot -proot -h127.0.0.1
在mysql命令中指定IP地址作为主机参数值将使mysql使用TCP协议而不是默认的unix套接字连接。
(注意,使用localhost作为主机参数值仍将使用unix套接字协议
或者使用
$ mysql -uroot -proot --protocol tcp
这个命令将明确指定协议参数
mysql docker连接错误。不能通过套接字'/var/run/mysqld/mysqld.sock'连接到本地MySQL服务器'首次出现在Redino博客上。