OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/m
Posted
技术标签:
【中文标题】OperationalError: (2002, "Can\'t connect to local MySQL server through socket \'/var/run/mysqld/mysqld.sock\' (2)")【英文标题】:OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)")OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)") 【发布时间】:2013-08-11 15:09:44 【问题描述】:在 Django 中连接 mysql 数据库时,出现错误。
我确定mysql服务器正在运行。
/var/run/mysqld/mysqld.sock 不存在。
当我运行 $ find / -name *.sock -type s
时,我只得到 /tmp/mysql.sock 和一些其他不相关的输出。
我将socket = /tmp/mysql.sock
添加到/etc/my.cnf。然后重启mysql,退出django shell,连接mysql数据库。我仍然遇到同样的错误。
查了很多,还是不知道怎么办。
任何帮助都是伟大的。提前致谢。
嗯,我只是尝试了一些方法。它有效。 我做了如下。
-
添加
socket = /tmp/mysql.sock
。重启mysql服务器。
ln -s /tmp/mysql.sock /var/lib/mysqld/mysqld.sock
我今天遇到了另一个问题。我无法登录到mysql。
我是mysql的新手。所以我猜mysql服务器和客户端使用相同的套接字进行通信。
我将socket = /var/mysqld/mysqld.sock
添加到 my.cnf 中的 [mysqld] [client] 块中,它可以工作。
【问题讨论】:
您可以使用MySQL CLI 在本地连接到您的 MySQL 服务器吗? (类似的东西:mysql -u you_user_name -p
)
您的DATABASES
设置是什么?
我可以使用 mysql -u user_name -p 连接到 mysql 服务器。我将数据库设置为 django 推荐
可以直接设置socket = /var/run/mysqld/mysqld.sock
吗?这样您就不必手动将 /tmp/mysql.sock
链接到该路径。
Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38)的可能重复
【参考方案1】:
使用“127.0.0.1”,而不是“localhost”
DATABASES =
'default':
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django',
'USER': 'root',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': '3306',
【讨论】:
知道为什么会有任何不同吗?大部分情况下 localhost 不是和 127.0.0.1 一样吗? 这是我们在软件开发中的苦乐参半的时刻之一:我很高兴它成功了,但同时我不知道为什么它会成功。不过还是谢谢。【参考方案2】:对我来说这很有效 使用 read_default_file 添加 OPTIONS 属性并为其提供 my.cnf 文件的路径
DATABASES =
'default':
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dbname',
'USER': 'root',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '3306',
'OPTIONS':
'read_default_file': '/opt/lampp/etc/my.cnf',
【讨论】:
【参考方案3】:在烧瓶中,你可以使用它
app=Flask(__name__)
app.config["MYSQL_HOST"]="127.0.0.1
app.config["MYSQL_USER"]="root"
...
【讨论】:
【参考方案4】:我在使用 Docker 连接 MySQL 和 Django 时遇到了这个问题。
试试'PORT':'0.0.0.0'
。
不要使用'PORT': 'db'
。如果您尝试在 Docker 之外运行您的应用程序,这将不起作用。
【讨论】:
以上是关于OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/m的主要内容,如果未能解决你的问题,请参考以下文章
Django / Docker-compose:重试数据库连接时:django.db.utils.OperationalError:(2002,“无法连接到'db'(115)上的MySQL服务器”)
OperationalError: (2002, “Can't connect to local MySQL server through socket '/var/run/mysql
FLASK python web:MySQLdb._exceptions.OperationalError:(2002,“无法通过套接字'/tmp/mysql.sock'连接到本(代码
sqlalchemy.exc.OperationalError:(sqlite3.OperationalError)没有这样的表:mytable
sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (2059, "Authentication pl