DBAtlas · Atlas de operaciones de bases de datos

Crear un usuario y otorgar privilegios

Oracle

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

Sin CREATE SESSION el usuario no puede conectarse. Para una cuota: 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;

Para tablas que se creen en el futuro: 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'@'%';

'%' permite conexiones desde cualquier host; por seguridad, indique una IP/host concreto cuando sea posible. CREATE USER/GRANT surten efecto de inmediato; FLUSH PRIVILEGES solo es necesario si se ejecutó DML directamente sobre las tablas de privilegios.

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;

Un login abarca todo el servidor; un user se crea por separado en cada base de datos. Para un rol: ALTER ROLE db_datareader ADD MEMBER app;

MongoDB

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

La db en la que se crea el usuario pasa a ser su auth db. Roles integrados: 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 = habilitado, >password añade una contraseña, ~app:* es el patrón de claves, +@read/+@write son categorías de comandos. Si no se persiste, se pierde al reiniciar: ACL SAVE solo funciona cuando hay un aclfile configurado y, en caso contrario, devuelve un error; en ese caso use CONFIG REWRITE.

Abrir en DBAtlas →