MySQLdb连接问题

Ian*_*Ian 13 python mysql connection

我遇到了MySQLdb模块的问题.

db = MySQLdb.connect(
    host = 'localhost', 
    user = 'root', 
    passwd = '', 
    db = 'testdb', 
    port = 3000)
Run Code Online (Sandbox Code Playgroud)

(我正在使用自定义端口)

我得到的错误是:

Error 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

这没有什么意义,因为这是my.conf中的默认连接设置..就好像它忽略了我给出的连接信息..

mysql服务器绝对存在:

[root@baster ~]# mysql -uroot -p -P3000
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 19
Server version: 5.0.77 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use testdb;
Database changed
mysql> 

我直接从python提示符尝试:

>>> db = MySQLdb.connect(user='root', passwd='', port=3000, host='localhost', db='pyneoform')
Traceback (most recent call last):
File "", line 1, in 
File "/usr/lib64/python2.5/site-packages/MySQLdb/__init__.py", line 74, in Connect
return Connection(*args, **kwargs)
File "/usr/lib64/python2.5/site-packages/MySQLdb/connections.py", line 169, in __init__
super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)")
>>>

我糊涂了... :(

gar*_*arg 50

更改localhost127.0.0.1解决使用我的问题MySQLdb:

db = MySQLdb.connect(
    host = '127.0.0.1', 
    user = 'root', 
    passwd = '', 
    db = 'testdb', 
    port = 3000)
Run Code Online (Sandbox Code Playgroud)

使用127.0.0.1强制客户端使用TCP/IP,以便侦听TCP端口的服务器可以对其进行补充.如果host指定为localhost,则将使用Unix套接字或管道.

  • 或者,您可以找到MySQL unix套接字的位置,并使用`unix_socket =/path/to/mysql.sock`指定它. (3认同)

小智 10

加上unix_socket='path_to_socket'这里path_to_socket应该是MySQL的插座,如路径/var/run/mysqld/mysqld2.sock


Dan*_*ane 3

确保 mysql 服务器正在侦听 tcp 连接,您可以使用 netstat -nlp (在 *nix 中)执行此操作。这是您尝试建立的连接类型,出于安全原因,默认情况下数据库通常不会侦听网络。另外,在使用 mysql 命令时尝试指定 --host=localhost,这也会尝试通过 unix 套接字进行连接,除非您另外指定。如果mysql没有配置为监听tcp连接,该命令也会失败。

这是mysql 5.1 手册中有关 unix 套接字和故障排除连接的相关部分。请注意,所描述的错误 (2002) 与您遇到的错误相同。

或者,检查您使用的模块是否有通过 unix 套接字连接的选项(如 David 建议)。