python MySQLdb连接mysql失败mysql_exceptions.OperationalError: 2002, Can not connect to local MySQL,socket
连接mysql的时候,host用的是localhost, 实际用的是UNIX Domain Socket来进行通信的。我们知道,UNIX Domain Socket的地址是一个socket类型的文件在文件系统中的路径,如果这个路径不存在的话,连接的时候就会失败。上面提示的错误原因是”Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)”,从字面意思上来看,是说无法通过’/var/lib/mysql/mysql.sock’这个socket来连接本地的mysql sever,这时候问题基本就比较明显了,应该是mysql配置的本地连接的socket不是’/var/lib/mysql/mysql.sock’这个路径的原因。接下来我们来验证我们的想法,打开mysql的配置文件(/etc/my.cnf),找到sockt 指向的文件。
修改:
(1)在python MySQLdb连接的时候,指定所用的unix_socket,跟配置文件一致。
mysqldb连接参数增加:unix_socket='/var/lib/mysql/mysql.sock'
(2)修改本地mysql server的UNIX Domain Socket,修改my.cnf。
(3)修改本地mysql server支持远程访问,采用普通socket进行连接。