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

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用户仅允许本地连接,需要授权它能从外部访问:

  1. 打开本地MySQL命令行或客户端(如Navicat),登录数据库。
  2. 执行以下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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 15:33:24