如何通过pymysql连接phpMyAdmin数据库?连接遇拒问题求助
解答你的phpMyAdmin与pymysql连接问题
先理清第一个疑惑:phpMyAdmin显示localhost却需用IP访问的原因
这是两个完全独立的逻辑,别搞混啦:
- phpMyAdmin界面里显示的「主机: localhost」,指的是phpMyAdmin自身连接MySQL数据库时用的地址——也就是说,MySQL服务和phpMyAdmin所在的Web服务器(比如Apache/Nginx)在同一台机器上,所以phpMyAdmin用
localhost就能直接连上本地的MySQL。 - 你得在浏览器输入
someIPAddress/phpMyAdmin才能打开界面,是因为phpMyAdmin部署在那台拥有someIPAddress的服务器上,你的本地电脑要访问这台服务器上的Web服务,必须用服务器的公网/局域网IP,而localhost在你的电脑上指向的是你自己的机器,自然找不到phpMyAdmin。
再解决pymysql连接被拒绝(2003错误)的核心问题
这个错误说明你的本地电脑根本连不上MySQL所在的服务器,或者MySQL不接受你的远程连接,按以下步骤逐一排查:
1. 检查MySQL用户的远程访问权限
登录phpMyAdmin后,点击顶部的「用户账户」:
- 找到你用来连接的用户(
myUserName),查看它的「主机」列。如果显示的是localhost或127.0.0.1,这个用户只能从MySQL所在的服务器本地连接,没法从你的电脑远程访问。 - 修改方法:点击用户右侧的「编辑权限」,在「登录信息」里把「主机」改成
%(允许所有IP访问),或者直接填你本地电脑的IP地址(更安全),然后点击「执行」保存。
2. 修改MySQL的绑定地址(允许远程连接)
MySQL默认可能只监听本地连接,需要调整配置文件:
- Linux系统:找到
/etc/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf,找到bind-address这一行,把值改成0.0.0.0(允许所有IP访问)。 - Windows系统:找到MySQL安装目录下的
my.ini,同样修改bind-address为0.0.0.0。 - 修改后务必重启MySQL服务(Linux用
systemctl restart mysql,Windows在服务管理器里重启MySQL)。
3. 检查服务器防火墙是否开放3306端口
就算MySQL配置对了,服务器的防火墙也可能挡住3306端口的连接:
- Linux:如果用ufw防火墙,执行
sudo ufw allow 3306;如果用iptables,执行sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT。 - Windows:在Windows防火墙的「高级设置」里,添加入站规则,允许TCP 3306端口的访问。
4. 修正pymysql的连接代码
你的连接参数需要调整,别再用localhost啦:
host必须填服务器的someIPAddress(就是你访问phpMyAdmin的那个IP),localhost或127.0.0.1指向的是你自己的电脑,不是MySQL所在的服务器。- 用户名不要加
@localhost,直接用myUserName就行。 - 正确的示例代码:
import pymysql # 配置参数 db_config = { 'host': 'someIPAddress', # 替换成服务器的实际IP 'user': 'myUserName', 'password': 'myPassword', 'database': 'myDatabase', 'port': 3306 } try: # 建立连接 con = pymysql.connect(**db_config) print("数据库连接成功!") # 后续操作... con.close() except pymysql.Error as e: print(f"连接失败: {str(e)}")
5. 额外排查小技巧
- 先在本地电脑ping一下服务器IP:
ping someIPAddress,如果不通,说明网络本身有问题,先解决网络连通性。 - 用telnet测试端口是否开放:
telnet someIPAddress 3306,如果提示无法连接,说明防火墙或MySQL绑定地址的问题还没解决。
内容的提问来源于stack exchange,提问作者bit-figure
相关产品推荐
相关产品推荐

