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
更改localhost
以127.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 服务器正在侦听 tcp 连接,您可以使用 netstat -nlp (在 *nix 中)执行此操作。这是您尝试建立的连接类型,出于安全原因,默认情况下数据库通常不会侦听网络。另外,在使用 mysql 命令时尝试指定 --host=localhost,这也会尝试通过 unix 套接字进行连接,除非您另外指定。如果mysql没有配置为监听tcp连接,该命令也会失败。
这是mysql 5.1 手册中有关 unix 套接字和故障排除连接的相关部分。请注意,所描述的错误 (2002) 与您遇到的错误相同。
或者,检查您使用的模块是否有通过 unix 套接字连接的选项(如 David 建议)。