数据库基础安全

一、先搞懂:数据库到底是什么?

数据库就是长期存在计算机里、有组织、可共享的超级数据仓库,和 Excel 比优势巨大:

  • 支持上亿条数据
  • 多人同时操作不乱
  • 高效查询、安全可控

数据库层级(用学校类比,秒懂)

表格

层级 类比 示例
数据库 整个学校 school(存所有校园数据)
数据表 各个部门 users(学生账号)、classes(班级)
字段 + 数据 表头 + 每行内容 id、name;2025001、张三

数据库管理系统 DBMS(数据库的 "管家")

负责管权限、存数据、定规则,主流 3 种:

  1. Oracle:强、收费,银行 / 电信用
  2. SQL Server:Windows 友好,政府常用
  3. MySQL开源免费、轻巧,网站 / 校园系统首选(本文重点)

二、2 种连接 MySQL 的方式:可视化 + 命令行

1)Navicat 可视化连接

  1. 打开 Navicat → 连接 → MySQL
  2. 填信息:
    • 主机:localhost
    • 端口:3306
    • 用户名:root
    • 密码:安装时设置
  3. 测试连接 → 成功即可用

2)命令行连接

复制代码
mysql -u root -p

回车输密码,看不见是正常的。


三、动手建库建表:school 库 + users 学生表

1)创建 school 数据库

复制代码
CREATE DATABASE school CHARACTER SET utf8 COLLATE utf8_general_ci;

2)创建 users 表(存账号密码)

复制代码
USE school;
CREATE TABLE users (
  id INT PRIMARY KEY,        -- 主键唯一
  name VARCHAR(50) NOT NULL,  -- 姓名非空
  id_card VARCHAR(18) NOT NULL,
  phone VARCHAR(11) NOT NULL,
  address TEXT,
  password VARCHAR(255) NOT NULL
);

字段含义一看就懂:主键、非空、长度限制,保证数据规范。


四、SQL 核心:CRUD 增删改查(必背)

SQL 就是和数据库对话的语言,也是黑客偷数据的工具。

1)C 新增 INSERT

复制代码
INSERT INTO users(id,name,id_card,phone,address,password)
VALUES(3,'shiro','123456789','123456789','中国','123456');

2)U 修改 UPDATE

千万不能漏 WHERE,否则全表被改!

复制代码
UPDATE users SET password='newpass789' WHERE id=2;

3)D 删除 DELETE

漏 WHERE 直接清空表,很难恢复!

复制代码
DELETE FROM users WHERE id=1;

4)R 查询 SELECT(黑客最爱的语句)

  • 查所有

    SELECT * FROM users;

  • 条件查询

    SELECT name,password FROM users WHERE id=1;

  • 多条件(AND/OR)

    SELECT * FROM users WHERE id=2 OR id=3;

  • 模糊查询 LIKE

    SELECT * FROM users WHERE name LIKE 'x%';

  • 排序 ORDER BY

    SELECT name FROM users ORDER BY id DESC;

  • 联合查询 UNION(SQL 注入核心)

    SELECT name,password FROM users UNION SELECT 1,2;

作用:合并多个查询结果,黑客用来跨表偷数据


五、重点:为什么会被 SQL 注入?真实原理

很多网站、教务系统被拖库、改成绩,90% 是 SQL 注入漏洞

注入演示(极简复现)

登录框这样输:

  • 用户名:随便填
  • 密码:123' or '1'='1

点击登录 → 直接绕过验证

为什么能成功?

后台拼接 SQL 变成:

复制代码
SELECT * FROM users WHERE name='xxx' AND password='123' or '1'='1'

'1'='1'永远为真,条件直接成立,登录被绕过。

真相:

网页只是 "门面",数据库才是黑客的真正目标,所有账号、密码、隐私都存在这里。


六、安全底线:法律 + 防护意识

根据《网络安全法》:

  • 不得非法侵入、窃取数据
  • 不得提供攻击工具、技术支持
  • 违者承担法律责任

基础防护思路:

  1. 过滤用户输入,禁止直接拼接 SQL
  2. 使用预编译语句 / 参数化查询
  3. 严格权限,最小够用原则

总结

  • 数据库 = 超级仓库;DBMS = 管家;MySQL = 最常用
  • 操作 =CRUD:增 INSERT、改 UPDATE、删 DELETE、查 SELECT
  • 漏洞 =SQL 注入:恶意拼接 SQL,绕过验证、偷数据
相关推荐
a9511416422 小时前
CSS 悬停箭头闪烁偏移问题的根源与稳定解决方案
jvm·数据库·python
CV-杨帆2 小时前
OpenClaw模型攻击与防御研究论文综述
安全
free_732 小时前
OpenClaw×AI隐私安全舱——ClawVault:重新定义企业级智能数据防线
人工智能·python·安全
安科瑞小许2 小时前
直流系统的“绝缘卫士”——储能与充电桩的安全防线
安全·充电桩·直流绝缘监测
Shorasul2 小时前
安装宝塔面板提示端口被占用_查找并终止占用进程
jvm·数据库·python
oradh2 小时前
Oracle数据库索引组织表概述
数据库·oracle·oracle基础·oracle索引组织表·索引组织表·iot表
2401_871696522 小时前
macOS 中使用 launchd 每分钟执行一次 PHP 脚本的完整配置指南
jvm·数据库·python
吕源林2 小时前
MongoDB副本集在网络闪断后如何快速恢复_重连机制与心跳超时(electionTimeoutMillis)
jvm·数据库·python
不会写DN2 小时前
如何排查 MySQL 慢查询
数据库·mysql·adb