python MySQLdb连接mysql时报错

故障现象:

>>> import MySQLdb
>>> conn = MySQLdb.connect(host="localhost",user="root",passwd="tiange1003",db="tian",port=3306,charset="utf8")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.7/site-packages/MySQLdb/__init__.py", line 81, in Connect
    return Connection(*args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/MySQLdb/connections.py", line 193, 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)")

原因分析:

这里主要是因为我们连接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),我们看到如下的内容:这里主要是因为我们连接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),我们看到如下的内容:

解决方式:

1、查看/etc/my.cnf配置文件

[mysqld]
datadir = /usr/local/mysql/data
log-error = /usr/local/mysql/data/error.log
pid-file = /usr/local/mysql/data/mysql.pid
user = mysql
tmpdir = /tmp

在这个配置文件里面添加

socket  = /tmp/mysql.sock

2、解决办法:
>>> import MySQLdb
>>> conn = MySQLdb.connect(host="localhost",user="root",passwd="tiange1003",db="tian",port=3306,charset="utf8",unix_socket=‘/tmp/mysql.sock‘)

原文地址:https://www.cnblogs.com/1111zhiping-tian/p/8359019.html

时间: 2024-10-09 05:45:18

python MySQLdb连接mysql时报错的相关文章

解决连接mysql时报错&quot;Can&#39;t connect to local MySQL server through socket &#39;/tmp/mysql.sock&#39;&quot;

命令行连接mysql时,报了“Can't connect to local MySQL server through socket '/tmp/mysql.sock'”的错误:用Navicat连接是报62号错误. 首先确定我本机是装了mysql的 尝试用安全模式启动mysql,命令行执行: /usr/local/bin/mysqld_safe 完了之后运行mysql,成功了. 解决连接mysql时报错"Can't connect to local MySQL server through soc

python MySQLdb连接mysql失败

Traceback (most recent call last):   File "./test_db.py", line 12, in < module>     db='mysite')   File "build/bdist.linux-x86_64/egg/MySQLdb/__init__.py", line 81, in Connect   File "build/bdist.linux-x86_64/egg/MySQLdb/con

python MySQLdb连接mysql失败(转载)

最近了解了一下django,数据库选用了mysql, 在连接数据库的过程中,遇到一点小问题,在这里记录一下,希望能够对遇到同样的问题的朋友有所帮助,少走一些弯路.关于django,想在这里也额外说一句.django是很优秀的基于python的web开发框架,对于有python基础的后台程序员,如果有要做一些前台的需求,强烈推荐django.下面言归正传. 1. 问题的现象 下面是连接数据库的代码,用的是python的MySQLdb模块: 1 2 3 4 5 db = MySQLdb.connec

python3连接Mysql时报错1045 using password : NO

首先先确保是否是账号或密码输入错误,可通过CMD登录MYSQL,若确认账号密码无误后,用python连接还是报1045 using password : NO,可做一下修改: 由于mysql8.0和mysql5.7安装不一样,  默认安装是不允许pymysql连接的,要么重装把authentication选项页修改为非默认(没有叹号图片那个); 修改完成后,再次通过CMD登录MYSQL,会发现登录不上,原因是系统自动把root的密码清零,即无密码,可自行修改密码 现在即可用python连接mys

springboot 连接 mysql 时报错 using password: NO

最近使用 springboot 配置 mysql 时出现了一个错误Access denied for user ''@'localhost' (using password: YES) 或者Access denied for user ''@'localhost' (using password: NO) 经发现这是 springboot 中 yml 语法的的一个坑,在我现在用的最新版本2.2.4 的springBoot中所推荐 yml 的格式是 data-username: root data

python -- MySQLdb连接mysql数据库

import MySQLdb # 打开数据库连接db = MySQLdb.connect(host="vpca-1.vm.elenet.me",port=9707, user="vpca_user",passwd="123456",db="vpca_db") # 使用cursor()方法获取操作游标cursor = db.cursor() # 使用execute方法执行SQL语句cursor.execute("SEL

Nodejs 连接 mysql时报错 Error: Cannot enqueue Query after fatal error

解决办法,参考:https://github.com/chill117/express-mysql-session/issues/18 我们只需在实例化SessionStore的时候,配置useConnectionPooling: true.比如: var sessionStore = new SessionStore({ host: 'localhost', port: 3306, user: 'root', password: 'root', database: 'session', use

【第一个项目】MySQL第二天早上第一次连接超时报错,解决方法com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:

MySQL第二天早上第一次连接超时报错,解决方法com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure Last packet sent to the server was 0 ms ago 最近碰到一个mysql5

PHP连接MySQL报错:SQLSTATE[HY000] [2002] Can&#39;t connect to local MySQL server through socket &#39;MySQL&#39; (2)

如下所示,PHP连接MySQL报错: SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket 'MySQL' (2) 测试代码如下: <?php try { $dsn = 'mysql:dbname=php-note;host=localhost;port=3306;charset=utf8'; $username = 'root'; $password = 'root'; new PDO( $dsn,