You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python连接MySQL报错111 Connection Refused求助

解决MySQL连接报错'2003: Can't connect to MySQL server on 'localhost:3306' (111 Connection refused)'

针对你遇到的问题——Python脚本无法连接本地MySQL但phpMyAdmin正常访问,以下是几个可行的排查和解决步骤:

1. 确认MySQL是否开启TCP/IP监听

phpMyAdmin通常默认使用Unix Socket连接,而你的Python脚本尝试通过TCP/IP连接。先检查MySQL是否在监听3306端口:

  • 执行终端命令:
    sudo netstat -tulpn | grep mysql
    
    如果输出里没有127.0.0.1:3306或0.0.0.0:3306的记录,说明MySQL没开启TCP/IP监听。
  • 修改MySQL配置文件(路径可能是/etc/mysql/mysql.conf.d/mysqld.cnf或/etc/my.cnf),找到bind-address配置项,设置为127.0.0.1,然后重启MySQL服务:
    sudo systemctl restart mysql
    

2. 改用Unix Socket连接

既然phpMyAdmin能正常访问,说明Socket连接是可用的。修改Python脚本,指定Socket路径:

import mysql.connector
from mysql.connector import Error

def conect_test(user_name, user_password):
    connection = None
    try:
        # 替换为你实际的Socket路径,可在phpMyAdmin「服务器信息」中查看「Unix socket」值
        connection = mysql.connector.connect(
            unix_socket='/var/run/mysqld/mysqld.sock',
            user=user_name,
            passwd=user_password,
            use_pure=True
        )
        print("MySQL Database connection successful")
    except Error as err:
        print(f"Erro: '{err}'")

    return connection

3. 移除use_pure=True参数

use_pure=True强制使用纯Python驱动,可能存在兼容性问题。尝试去掉该参数:

connection = mysql.connector.connect(
    host=host_name,
    user=user_name,
    passwd=user_password
)

4. 验证函数调用参数

确保调用conect_test时传入的主机、用户名、密码和phpMyAdmin使用的完全一致,比如:

# 示例调用,替换为你的实际账号信息
conn = conect_test('localhost', 'root', 'your_db_password')

内容的提问来源于stack exchange,提问作者Rodrigo Oliveira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 05:46:07