如何通过Python实现多台电脑连接同一MySQL服务器并操作数据
配置实现步骤
服务端(部署MySQL的笔记本)配置
- 修改MySQL监听地址:默认MySQL仅允许本地连接,找到MySQL配置文件(Windows系统为
my.ini,Linux/macOS系统为my.cnf),将bind-address参数修改为0.0.0.0,或直接注释该行配置,修改完成后重启MySQL服务生效。 - 开通MySQL用户远程访问权限:登录MySQL执行以下SQL语句,给指定账号授权远程访问权限:
其中GRANT ALL PRIVILEGES ON 你的数据库名.* TO '你的用户名'@'%' IDENTIFIED BY '你的密码'; FLUSH PRIVILEGES;%代表允许所有IP访问,如需限制仅特定IP访问,将%替换为对应IP即可。 - 放行防火墙端口:在服务端笔记本的防火墙中添加3306端口(MySQL默认端口)的入站规则,避免其他设备的连接请求被拦截。
- 查看服务端局域网IP:同局域网下的设备连接时需要用到服务端的局域网IP,Windows可在CMD执行
ipconfig查看IPv4地址,Linux/macOS可执行ip addr查看。如需跨公网访问,需要在服务端路由器上配置3306端口的端口映射,将公网IP的3306端口映射到服务端笔记本的局域网IP的3306端口即可,注意公网暴露数据库端口有安全风险,建议设置强密码并限制访问IP范围。
客户端(其他笔记本)代码调整
无需安装MySQL服务或MySQL Workbench,仅需安装mysql-connector-python依赖,原有代码逻辑不需要大改,仅需调整数据库连接参数即可,调整后示例代码如下:
import mysql.connector # 客户端只需执行pip install mysql-connector-python安装依赖即可 # 建立连接,host填写服务端的局域网IP(公网访问则填公网IP),其余参数和服务端配置的数据库信息保持一致 mydb = mysql.connector.connect(host="服务端IP地址", user="授权的MySQL用户名", passwd="对应的MySQL密码", database="目标数据库名" ) mycursor = mydb.cursor() mycursor.execute("select items from test where inuse = 0") databaselist2 = [i[0] for i in mycursor.fetchall()] print(databaselist2) # 执行增删改操作时需要手动提交事务 # mycursor.execute("update test set inuse = 1 where items = '测试项'") # mydb.commit() # 操作完成后关闭连接释放资源 mycursor.close() mydb.close()
你原有开发的GUI逻辑可以直接复用,不需要额外调整。
多设备同时接入注意事项
- MySQL本身支持多连接并发访问,不需要额外修改服务端基础配置,多台设备用授权的账号同时连接即可正常使用。
- 多设备同时执行写操作(增删改)时,建议做好事务处理,操作完成后调用
commit()提交,出现异常调用rollback()回滚,避免出现脏数据。 - 建议每次操作完成后主动关闭游标和连接,避免无效占用数据库连接资源。
内容的提问来源于stack exchange,提问作者neo_codex
相关产品推荐
相关产品推荐

