Skip to content

给数据库创建用户

前言

在日常开发或运维中,一个数据库通常由多个系统或团队共同使用。为了保证数据安全、降低误操作风险、并实现权限隔离,我们不能所有程序或人员都共享同一个数据库超级账号(如 root)。
创建专用的数据库用户并给予最小权限,是一种标准且安全的数据库管理方式。

举个现实类比:
数据库就像公司内的资料室,而账号就是钥匙。如果所有人都拿万能钥匙进入所有房间,既不安全,也无法追责。所以我们需要——给不同角色发不同的钥匙(权限)。


为什么要创建独立用户?

原因说明
保证数据安全限制访问范围,避免误删或误改其他数据库
权限隔离只给予所需权限,降低风险
审计与追踪每个账号对应唯一责任方,日志可回溯
远程访问管理可对不同服务器分配不同账户,提高控制力度

举例:一个 Java 应用只需要访问 app_db 数据库,那就没必要让它能看到其他库,更不需要 root 权限。

怎么创建用户?

下面以 MySQL 为例,演示创建用户 + 授权数据库访问的完整流程。

1️⃣ 进入数据库

bash
mysql -uroot -p 192.168.1.50

2️⃣ 创建数据库(如不存在)

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 连接你的数据库,永远给应用和人员单独创建账号,并授予最小权限。