Por lo general, uso bases de datos y rara vez tengo operaciones autorizadas, pero recientemente hubo una escena en la que necesito establecer qué bases de datos, tablas y secuencias solo pueden ser operadas por un determinado usuario. Permítanme compartir mi experiencia, uso la base de datos PostgreSQL.
Sintaxis del comando de empoderamiento
Los comandos de concesión en PostgreSQL son GRANT y REVOKE.
El comando GRANT se utiliza para otorgar ciertos permisos (como SELECCIONAR, INSERTAR, ACTUALIZAR, ELIMINAR, etc.) a un determinado usuario o grupo de usuarios sobre un objeto (como tablas, vistas, funciones, etc.).
gramática:
GRANT privilege [, ...] ON object TO {user | group | PUBLIC} [, ...] [WITH GRANT OPTION];
Entre ellos, privilegio es un tipo de permiso, objeto es un objeto, que puede ser una tabla, vista, función, etc., usuario o grupo es el usuario o grupo de usuarios al que se le otorga permiso y PUBLIC significa todos los usuarios.
Por ejemplo, el usuario autorizado zhangsan realiza operaciones SELECT e INSERT en la prueba de la tabla:
GRANT SELECT, INSERT ON test TO zhangsan;
El comando REVOKE se utiliza para revocar ciertos permisos de un usuario o grupo de usuarios sobre un objeto.
gramática:
REVOKE privilege [, ...] ON object FROM {user | group | PUBLIC} [, ...] [CASCADE | RESTRICT];
Entre ellos, los significados de privilegio, objeto, usuario o grupo y PUBLIC son los mismos que los del comando GRANT.
Por ejemplo, cancele el permiso SELECT del usuario zhangsan en la prueba de la tabla:
REVOKE SELECT ON test FROM zhangsan;
Cabe señalar que sólo los superusuarios tienen autoridad para otorgar y revocar permisos.
combate
ver todos los usuarios
SELECCIONAR * DE pg_user;
Crear un usuario y establecer una contraseña
CREAR USUARIO zhangsan CON CONTRASEÑA '123456';
eliminar usuarios
SOLTAR USUARIO zhangsan;
crear base de datos
CREAR BASE DE DATOS prueba;
eliminar base de datos
BOTAR BASE DE DATOS SI EXISTE prueba;
Eliminar los privilegios del usuario en la base de datos de "prueba"
REVOCAR TODOS los privilegios EN LA "prueba" DE LA BASE DE DATOS DE zhangsan;
Dar permiso al usuario para operar la base de datos de "prueba"
OTORGAR CONECTAR, CREAR, TEMPORAL EN LA "prueba" DE LA BASE DE DATOS A zhangsan;
Dar permiso al usuario para operar tablas en la base de datos de "prueba"
OTORGAR SELECCIONAR, INSERTAR, ACTUALIZAR, ELIMINAR
EN TODAS LAS TABLAS DEL ESQUEMA PÚBLICO
A zhangsan;
Otorga al usuario el privilegio de operar en secuencias en la base de datos de "prueba"
Definiciones de permisos para secuencias
Se puede ver en el documento oficial que todos los permisos de la secuencia son rwU, correspondientes a SELECT, UPDATE, USAGE respectivamente;
Para secuencias, el privilegio SELECT permite el uso de la función currval
Para secuencias, el privilegio ACTUALIZAR permite el uso de las funciones nextval y setval
Para secuencias, el privilegio USAGE permite el uso de las funciones currval y nextval
Si necesita tener permiso para modificar la secuencia, puede otorgar TODOS directamente, de la siguiente manera
OTORGAR SELECCIÓN, ACTUALIZAR Y USO EN TODAS LAS SECUENCIAS DEL ESQUEMA PÚBLICO A zhangsan;
Si solo usa la secuencia y no necesita modificarla, puede habilitar USO
CONCEDER EL USO EN TODAS LAS SECUENCIAS DEL ESQUEMA PÚBLICO A zhangsan;