用户权限和备份恢复

真实项目不要直接用 root 账号连接数据库。

应该给项目创建单独账号,并且只授予它需要的权限。

一、为什么不要用 root

root 是 MySQL 超级管理员。

如果后端项目配置了 root

  • 代码泄漏时风险很大。
  • 误操作可能影响所有数据库。
  • 权限边界不清晰。

更好的做法是:

  • 每个项目一个数据库。
  • 每个项目一个数据库账号。
  • 只授权这个账号访问自己的数据库。

二、创建项目用户

使用 root 登录 MySQL 后执行:

CREATE USER 'blog_app'@'localhost' IDENTIFIED BY 'strong_password_here';

含义:

部分含义
blog_app用户名
localhost只允许本机连接
strong_password_here密码,实际项目要换成强密码

如果后端服务和 MySQL 不在同一台机器上,需要按实际来源主机授权,不要随意使用 %

三、授权访问指定数据库

只授权访问 mysql_tutorial

GRANT SELECT, INSERT, UPDATE, DELETE
ON mysql_tutorial.*
TO 'blog_app'@'localhost';

如果项目需要执行建表和迁移,可以额外给结构变更权限:

GRANT CREATE, ALTER, INDEX, DROP
ON mysql_tutorial.*
TO 'blog_app'@'localhost';

本地练习时可以理解为:

权限作用
SELECT查询
INSERT新增
UPDATE修改
DELETE删除
CREATE创建表
ALTER修改表结构
DROP删除表
INDEX创建和删除索引

四、查看权限

SHOW GRANTS FOR 'blog_app'@'localhost';

可以看到这个用户拥有哪些权限。

五、撤销权限

撤销删除权限:

REVOKE DELETE
ON mysql_tutorial.*
FROM 'blog_app'@'localhost';

删除用户:

DROP USER 'blog_app'@'localhost';

六、备份数据库

常用命令行工具是 mysqldump

备份整个数据库:

mysqldump -u root -p mysql_tutorial > mysql_tutorial.sql

含义:

部分含义
mysqldumpMySQL 备份工具
-u root -p使用 root 登录并输入密码
mysql_tutorial要备份的数据库
> mysql_tutorial.sql把结果写入 SQL 文件

备份指定表:

mysqldump -u root -p mysql_tutorial users posts > blog_tables.sql

七、恢复数据库

先创建数据库:

CREATE DATABASE IF NOT EXISTS mysql_tutorial
    DEFAULT CHARACTER SET utf8mb4
    DEFAULT COLLATE utf8mb4_0900_ai_ci;

再在命令行执行:

mysql -u root -p mysql_tutorial < mysql_tutorial.sql

注意:

  • 这是系统命令,不是在 mysql> 提示符里执行。
  • 恢复前要确认目标数据库是否已有数据。
  • 真实环境恢复前建议先备份当前数据。

八、导出查询结果

有时只想导出查询结果,可以用 MySQL 客户端:

mysql -u root -p -e "SELECT id, username, email FROM mysql_tutorial.users;"

也可以在图形化工具里导出 CSV。

如果导出用户数据,要注意隐私和敏感字段,不要随意导出密码哈希、手机号、邮箱等数据。

九、基础安全习惯

习惯原因
不用 root 连接业务项目降低误操作和泄漏风险
密码不要写进公开仓库防止凭据泄漏
只授予必要权限权限越小,风险越小
定期备份防止误删、硬件故障、迁移失败
备份后要演练恢复没验证过的备份不可靠
生产环境谨慎开放公网端口数据库不应随意暴露在互联网

十、后端项目配置示例

后端通常用环境变量保存数据库连接信息:

DB_HOST=127.0.0.1
DB_PORT=3306
DB_NAME=mysql_tutorial
DB_USER=blog_app
DB_PASSWORD=strong_password_here

不要把真实密码提交到 Git 仓库。

可以提交一个示例文件:

.env.example

真实密码放在本地 .env 或服务器环境变量里。