DBAtlas · 数据库运维图谱

创建用户并授予权限

Oracle

CREATE USER app IDENTIFIED BY "Strong#Pass1";
GRANT CREATE SESSION TO app;
GRANT SELECT, INSERT, UPDATE ON hr.employee TO app;

没有 CREATE SESSION 权限,用户无法连接。设置配额:ALTER USER app QUOTA 100M ON users;

PostgreSQL

CREATE ROLE app LOGIN PASSWORD 'Strong#Pass1';
GRANT CONNECT ON DATABASE mydb TO app;
GRANT USAGE ON SCHEMA public TO app;
GRANT SELECT, INSERT, UPDATE ON ALL TABLES IN SCHEMA public TO app;

针对将来创建的表:ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO app;

MySQL

CREATE USER 'app'@'%' IDENTIFIED BY 'Strong#Pass1';
GRANT SELECT, INSERT, UPDATE ON mydb.* TO 'app'@'%';

'%' 允许来自任意主机的连接;出于安全考虑,尽可能指定具体的 IP/主机。CREATE USER/GRANT 会立即生效;只有直接对授权表执行了 DML 时才需要 FLUSH PRIVILEGES。

SQL Server

CREATE LOGIN app WITH PASSWORD = 'Strong#Pass1';
USE mydb;
CREATE USER app FOR LOGIN app;
GRANT SELECT, INSERT, UPDATE ON SCHEMA::dbo TO app;

登录名是服务器范围的;用户需在每个数据库中分别创建。添加角色:ALTER ROLE db_datareader ADD MEMBER app;

MongoDB

db.createUser({
  user: "app",
  pwd: "Strong#Pass1",
  roles: [ { role: "readWrite", db: "mydb" } ]
})

创建用户时所在的 db 即成为其认证数据库。内置角色:read、readWrite、dbAdmin、clusterAdmin……

Redis

ACL SETUSER app on >Strong#Pass1 ~app:* +@read +@write
# To persist: ACL SAVE if an aclfile is defined, otherwise CONFIG REWRITE (users are written to redis.conf)

on = 启用,>password 添加密码,~app:* 是键模式,+@read/+@write 是命令类别。若未持久化,重启后会丢失:ACL SAVE 仅在配置了 aclfile 时可用,否则返回错误;这种情况下使用 CONFIG REWRITE。

在 DBAtlas 中打开 →