Python mariadb模块无法连接局域网内MariaDB数据库求助
Python mariadb模块连接局域网MariaDB失败解决方案
问题描述
使用Python的mariadb模块连接局域网内MariaDB数据库时触发OperationalError: Can't connect to server on '192.168.178.77' (60)错误,但PyCharm数据库工具、本地数据库管理软件及手机均能正常连接目标数据库,操作系统为MacOS13.0.1。
代码示例
import mariadb cursor = mariadb.connect(host='192.168.178.77', user='someuser', password='somepass', db='temps')
报错信息
Traceback (most recent call last): File "/Users/localuser/PycharmProjects/SQL/main.py", line 20, in <module> cursor = mariadb.connect(host='192.168.178.77', user='someuser', password='somepass', db='temps') File "/Users/user/.conda/envs/SQL/lib/python3.10/site-packages/mariadb/__init__.py", line 142, in connect connection = connectionclass(*args, **kwargs) File "/Users/localuser/PycharmProjects/SQL/lib/python3.10/site-packages/mariadb/connections.py", line 86, in __init__ super().__init__(*args, **kwargs) mariadb.OperationalError: Can't connect to server on '192.168.178.77' (60)
排查与解决步骤
- 更新conda环境内的mariadb依赖:你使用的是conda虚拟环境,可能环境内的mariadb-python包版本存在兼容性问题。执行以下命令更新:
pip install --upgrade mariadb # 或使用conda源安装 conda install -c conda-forge mariadb-python - 显式指定数据库端口:默认MariaDB端口为3306,虽然其他工具能自动识别,但代码中显式指定端口可避免潜在的端口匹配问题:
import mariadb conn = mariadb.connect( host='192.168.178.77', port=3306, user='someuser', password='somepass', db='temps' ) cursor = conn.cursor() - 检查MacOS防火墙权限:确认conda环境的Python进程被允许联网。打开「系统设置」→「网络」→「防火墙」,找到路径为
/Users/user/.conda/envs/SQL/bin/python的进程,确保其联网权限已开启。 - 验证数据库用户连接权限:确保
someuser用户允许从你的Mac局域网IP地址连接。登录目标数据库执行以下SQL:-- 查看用户允许的连接IP SELECT host FROM mysql.user WHERE user='someuser'; -- 如果未包含你的MacIP,添加权限 GRANT ALL PRIVILEGES ON temps.* TO 'someuser'@'你的Mac局域网IP' IDENTIFIED BY 'somepass'; FLUSH PRIVILEGES; - 强制使用TCP协议连接:部分情况下,mariadb模块可能默认尝试套接字连接,显式指定TCP协议可解决该问题:
conn = mariadb.connect( host='192.168.178.77', protocol='tcp', user='someuser', password='somepass', db='temps' ) cursor = conn.cursor()
内容的提问来源于stack exchange,提问作者Husky-CGN
相关产品推荐
相关产品推荐

