Can';t连接到';本地主机:3306';即使mysqld正在3306端口上运行

Can';t连接到';本地主机:3306';即使mysqld正在3306端口上运行,mysql,mysql-connector,mysql-connector-python,Mysql,Mysql Connector,Mysql Connector Python,试图使用mysql连接器通过python连接到mysql,但我遇到了以下错误: Traceback (most recent call last): File "/var/www/html/cloudlab/env/lib/python3.6/site-packages/mysql/connector/network.py", line 509, in open_connection self.sock.connect(sockaddr) ConnectionRefusedError

试图使用mysql连接器通过python连接到mysql,但我遇到了以下错误:

 Traceback (most recent call last):
 File "/var/www/html/cloudlab/env/lib/python3.6/site-packages/mysql/connector/network.py", line 509, in open_connection
    self.sock.connect(sockaddr)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "./get_stf_file_names.py", line 26, in update_aws_script_details
    database="service_portal"
  File "/var/www/html/cloudlab/env/lib/python3.6/site-packages/mysql/connector/__init__.py", line 179, in connect
    return MySQLConnection(*args, **kwargs)
  File "/var/www/html/cloudlab/env/lib/python3.6/site-packages/mysql/connector/connection.py", line 95, in __init__
    self.connect(**kwargs)
  File "/var/www/html/cloudlab/env/lib/python3.6/site-packages/mysql/connector/abstracts.py", line 716, in connect
    self._open_connection()
  File "/var/www/html/cloudlab/env/lib/python3.6/site-packages/mysql/connector/connection.py", line 206, in _open_connection
    self._socket.open_connection()
  File "/var/www/html/cloudlab/env/lib/python3.6/site-packages/mysql/connector/network.py", line 512, in open_connection
    errno=2003, values=(self.get_address(), _strioerror(err)))
mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on 'localhost:3306' (111 Connection refused)
我已经检查了mysqld是否正在使用端口3306,它是:

netstat -lnp | grep 3306
其中给出:

tcp        0      0 my-ip:3306      0.0.0.0:*               LISTEN      12003/mysqld
我也尝试过这个命令,它工作得非常好:

mysql -h localhost -u root -p
(如中所示,我可以使用此连接到数据库)

我试图通过以下方式访问数据库:

mydb = mysql.connector.connect(host="localhost",user="****",
    passwd="****",
    database="**********"
    )
    cursor = mydb.cursor(dictionary=True)

如果我在上面的命令中将localhost更改为我的ip,那么它可以正常工作。有什么我做错了吗?

本地主机它是ip 127.0.0.1。

您的mysql实例是在该ip上侦听还是在外部侦听?

即使我在安装时也遇到了相同的错误。因此,如果您已经安装了它,请先卸载它并删除文件夹C:\ProgramData\mysql。 完成后,下载并安装该文件

注意:在安装时,请将端口号更改为3307或3308,然后按照一些youtube视频正常安装。唯一的更改应该是端口号3306⚠️(显示端口已在使用)至3307或3308或任何其他。 无论什么地方⚠️ 显示更改目录或端口号

最后,在通过mysqlworkbench启动新数据库时,将端口更改为3307或3308,就像您在安装时所做的那样

如果已存在根目录下的连接,右键单击并按编辑连接,将端口更改为3307,然后按测试连接。它将正常工作。
如果您遇到任何错误,请回复

我的ip不是127.0.0.1。它是一个外部ip。所以这就是问题所在吗?@GaneshBiradar我猜
mysql
是否在网络接口上监听,而不是
lo
?或者配置文件拒绝本地主机连接?我的ip在10.0.0.0到10.255.255.255之间。那么这是否意味着该接口不是localhost?如果是的话,我有没有办法让它同时在本地主机和现有的my ip上监听?我想你在resolv.conf有盟友从本地主机监听你的外部ip。尝试在您的应用程序中显式定义外部ipcode@Alex_H正如我在问题中已经提到的,如果我定义ip而不是localhost,它就会工作。您能告诉我是否有办法使它也能与本地主机一起工作吗?也许您无法使用ip访问3306,您可以尝试windows防火墙>高级设置>入站规则创建新规则以将您的ip访问3306端口吗。