HTML表单登录系统数据库远程连接失败问题求助
解决远程连接MySQL数据库时「unknown database」的问题
问题场景
我是一名预科生,作业是为HTML表单搭建登录系统数据库。本地连接数据库并写入数据均正常,但朋友运行该表单提交数据时,出现「unknown database」报错。尝试在代码中添加CREATE DATABASE和CREATE TABLE IF NOT EXISTS语句后,问题仍未解决,想了解如何让朋友将数据写入我的数据库。
我的数据库连接代码:
<?php /* Database credentials. Assuming you are running MySQL server with default setting (user 'root' with no password) */ define('DB_SERVER', 'localhost'); define('DB_USERNAME', 'root'); define('DB_PASSWORD', ''); define('DB_NAME', 'membership'); /* Attempt to connect to MySQL database */ $link = mysqli_connect("localhost", "root", "", "membership"); // Check connection if($link === false){ die("ERROR: Could not connect. " . mysqli_connect_error()); } ?>
问题根源
- 代码里
DB_SERVER设为localhost,意味着朋友的程序只会尝试连接他自己本地的MySQL服务器,而非你的。他本地没有membership数据库,所以触发「unknown database」报错。 - 你添加的
CREATE DATABASE语句,也是在他本地创建数据库,和你的数据库完全无关,因此无法解决问题。
解决方案
1. 修改数据库连接地址
把DB_SERVER从localhost替换成你的公网IP地址。如果你的电脑在局域网内,还需要在路由器上做端口映射(MySQL默认端口是3306),让外部网络能访问你的MySQL服务。
修改后的示例代码:
<?php define('DB_SERVER', '你的公网IP'); // 替换成实际公网IP define('DB_USERNAME', 'root'); define('DB_PASSWORD', ''); define('DB_NAME', 'membership'); $link = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME); if($link === false){ die("ERROR: Could not connect. " . mysqli_connect_error()); } ?>
2. 授权MySQL用户远程访问
默认MySQL的root用户仅允许本地连接,需要授权它能从外部访问:
- 打开本地MySQL命令行或客户端(如Navicat),登录数据库。
- 执行以下SQL命令:
注意:如果你的-- 允许root从任意IP访问(测试用,正式环境建议限制具体IP) GRANT ALL PRIVILEGES ON membership.* TO 'root'@'%' IDENTIFIED BY ''; -- 刷新权限使设置生效 FLUSH PRIVILEGES;root用户有密码,把命令里的''替换成实际密码。
3. 开放本地防火墙端口
确保你的电脑防火墙允许3306端口的入站连接,否则朋友的请求会被拦截。
额外提醒
- 直接用
root用户远程访问存在安全风险,作业完成后建议创建专门的远程用户,仅授予membership数据库的读写权限。 - 如果你的公网IP是动态的(比如家庭宽带),可以使用动态域名服务(DDNS)来固定访问地址。
内容的提问来源于stack exchange,提问作者Wani
相关产品推荐
相关产品推荐

