给数据库创建用户
前言
在日常开发或运维中,一个数据库通常由多个系统或团队共同使用。为了保证数据安全、降低误操作风险、并实现权限隔离,我们不能所有程序或人员都共享同一个数据库超级账号(如 root)。
创建专用的数据库用户并给予最小权限,是一种标准且安全的数据库管理方式。
举个现实类比:
数据库就像公司内的资料室,而账号就是钥匙。如果所有人都拿万能钥匙进入所有房间,既不安全,也无法追责。所以我们需要——给不同角色发不同的钥匙(权限)。
为什么要创建独立用户?
| 原因 | 说明 |
|---|---|
| 保证数据安全 | 限制访问范围,避免误删或误改其他数据库 |
| 权限隔离 | 只给予所需权限,降低风险 |
| 审计与追踪 | 每个账号对应唯一责任方,日志可回溯 |
| 远程访问管理 | 可对不同服务器分配不同账户,提高控制力度 |
举例:一个 Java 应用只需要访问 app_db 数据库,那就没必要让它能看到其他库,更不需要 root 权限。
怎么创建用户?
下面以 MySQL 为例,演示创建用户 + 授权数据库访问的完整流程。
1️⃣ 进入数据库
bash
mysql -uroot -p 192.168.1.502️⃣ 创建数据库(如不存在)
sql
CREATE DATABASE app_db;3️⃣ 创建用户
- 允许远程访问(任意 IP):
sql
CREATE USER 'user01'@'%' IDENTIFIED BY 'User01_Password';- 仅允许本地访问(更安全):
sql
CREATE USER 'user01'@'localhost' IDENTIFIED BY 'User01_Password';4️⃣ 授权用户访问指定数据库
sql
GRANT ALL PRIVILEGES ON app_db.* TO 'user01'@'%';5️⃣ 刷新权限
sql
FLUSH PRIVILEGES;验证是否成功
查看该用户的真实权限:
sql
SHOW GRANTS FOR 'user01'@'%';正确示例输出:
sql
GRANT ALL PRIVILEGES ON `app_db`.* TO 'user01'@'%'使用该用户登录测试:
bash
mysql -u appuser -p -h <服务器IP>
SHOW DATABASES;总结
创建独立的数据库用户并分配最小权限,是数据库安全管理的基本原则。 它不仅能减少误操作、增强安全性,同时也让系统维护更可控、更可追踪。
一句话概括:
不要用 root 连接你的数据库,永远给应用和人员单独创建账号,并授予最小权限。