游客发表
你下载了一套网站源码,网站解压后看到一堆 .php 或 .py 文件,源码里面有一行写着 mysql_connect('localhost',数据 'root', '123456')。这就是库用数据库的入口。没有它,网站网站只能显示死数据,源码用户注册、数据发帖、库用下单全都存不下来。网站
数据库不是源码网站源码里自带的东西。源码只是数据几段代码,数据库是库用另一个独立运行的软件,比如 MySQL、网站PostgreSQL 或者 SQLite。源码源码通过一个叫“连接字符串”的数据东西找到数据库,然后发指令。连接字符串里通常有四个关键信息:地址、端口、用户名、密码。很多人把源码传到服务器后打不开,报错 “Access denied for user”,八成是这几个值没改对。
我见过一个典型的例子。一个朋友买了套二手商城源码,本地测试好好的,上传到阿里云就白屏。他以为是 PHP 版本问题,折腾了一下午。最后发现源码里写死了 localhost,但阿里云的数据库是独立的内网地址,不是本机。改掉那一行,网站就活了。数据库地址写 localhost 只适用于数据库和网站跑在同一台机器上。一旦分开,必须换成真实 IP 或域名。
连接建立之后,源码会执行 SQL 语句。比如用户登录,源码会拼出一句 SELECT * FROM users WHERE username='张三' AND password='...'。这里有个坑:很多老源码直接把用户输入拼进 SQL,导致 SQL 注入。你搜 “网站源码 数据库 注入”,能翻出一堆十年前的老站被拖库的案例。现在正规做法是用参数化查询,把用户输入当纯文本处理,不参与 SQL 语法解析。
数据库里的表结构决定了源码能不能跑。源码包里通常会带一个 .sql 文件,叫“数据库备份”或“初始化脚本”。你得先登录数据库管理工具(比如 phpMyAdmin 或 Navicat),新建一个空数据库,然后导入这个 .sql 文件。导入之后,表就建好了,字段和源码里的查询一一对应。如果源码里查 users 表,但你导入的库里只有 user 表,那就会报 “Table 'xxx.users' doesn't exist”。这时候要么改源码,要么改表名。
改数据库配置通常在源码的 config.php 或 .env 文件里。打开它,你会看到类似这样的内容:
DB_HOST=127.0.0.1 DB_NAME=mywebsite DB_USER=root DB_PASS=123456 把这几行改成你实际数据库的信息。注意 DB_NAME 是你新建的那个空库的名字,不是 .sql 文件的名字。很多人在这里填错,然后对着 “Unknown database” 的报错发呆。
还有一点:数据库用户权限。你用的那个 DB_USER 必须对 DB_NAME 有读写权限。有些虚拟主机只给一个固定用户,你没法用 root。这时候要么找主机商开权限,要么换一套要求更低的源码。我见过有人硬改源码里的查询语句,把 INSERT 改成 SELECT,结果网站只能看不能写,用户注册全失败。
最后说一个实际观察。很多新手以为数据库是“网站的一部分”,所以只备份网站文件,不备份数据库。结果服务器一挂,源码还在,用户数据全没了。数据库和源码是分开的两个东西,备份也要分开做。导出 .sql 文件,和打包源码文件夹,缺一不可。
数据库用起来就这么几件事:改对连接信息,导入表结构,确认权限,别把用户输入直接拼进 SQL。剩下的就是具体业务逻辑,那是源码本身的事。
友情链接