SQL Server Securable y Principal
Un asegurable se refiere a los recursos a los que el sistema de autorización del Motor de base de datos de SQL Server controla el acceso. Un ejemplo sería una tabla de base de datos.
Un principal se refiere a cualquier entidad que requiere acceso a cualquier recurso de SQL Server. Por ejemplo, un usuario que solicita permisos en una tabla es un principal.
Declaración de concesión de SQL Server
A continuación se muestra la sintaxis del comando GRANT en SQL Server:
OTORGAR permisos
ON securable TO principal;
Debe especificar el permiso que desea asignar al principal como una lista separada por comas.
La palabra clave ON le permite especificar el asegurable en el que se aplican los permisos. Finalmente, la palabra clave TO le permite establecer el principal de destino.
Por ejemplo, la creación de un usuario mediante la instrucción CREATE USER no define los permisos para ese usuario. Por lo tanto, es esencial usar la declaración GRANT para establecer los permisos para ese usuario.
Tomemos un ejemplo.
Crear ejemplo de inicio de sesión
Comencemos creando un inicio de sesión de muestra con fines ilustrativos. La consulta es la siguiente:
crear inicio de sesión linuxhintcon contraseña='contraseña';
El comando anterior debería crear un usuario con el nombre de usuario linuxhint y la contraseña especificada.
Crear base de datos de muestra
Podemos crear una base de datos donde residirá el usuario una vez que hayamos definido un inicio de sesión. Las consultas son las que se muestran:
descartar base de datos si existe resolver;crear resolución de base de datos;
usar resolución;
soltar tabla si existen entradas;
crear entradas de tabla (
id int no nulo identidad (1,
1) clave principal,
nombre_servidor varchar(50),
server_address varchar (255) no es nulo,
compresión_método varchar (100) por defecto 'ninguno',
size_on_disk flotante no nulo,
flotador tamaño_comprimido,
total_records int no nulo,
init_date fecha
);
insertar
dentro
ENTRADAS(nombre_servidor,
dirección del servidor,
método de compresión,
tamaño_en_disco,
tamaño_comprimido,
registros_totales,
fecha_inicial)
valores
('MySQL','localhost:3306','lz77',90.66,40.04,560000,'2022-01-02'),
('Redis','localhost:6307','Snappy',3.55,998.2,100000,'2022-03-19'),
('PostgreSQL','localhost:5432','pglz',101.2,98.01,340000,'2022-11-11'),
('Búsqueda elástica','localhost:9200','lz4',333.2,300.2,1200000,'2022-10-08'),
('MongoDB','localhost:27017','Snappy',4.55,4.10,620000,'2021-12-12'),
('Apache Cassandra','localhost:9042','zstd',300.3,200.12,10000000,'2020-03-21');
Crear un usuario para el inicio de sesión
Una vez que hemos creado la base de datos y la tabla, podemos crear un usuario para el inicio de sesión de linuxhint como:
usar resolucióncrear usuario linuxhint
para iniciar sesión linuxhint;
Iniciar sesión como nuevo usuario
A continuación, iniciemos sesión como el usuario recién creado. El comando es como se muestra:
setuser 'linuxhint';Una vez que haya iniciado sesión, podemos intentar ver las tablas ejecutando el comando de selección:
seleccione * de las entradas;Ejecutar la consulta anterior debería devolver un error:
Msj 229, Nivel 14, Estado 5, Línea 379El permiso SELECT fue denegado en el objeto 'entradas', base de datos 'resolver', esquema 'dbo'.
Esto se debe a que el usuario de linuxhint no tiene ningún permiso en la base de datos, incluidos los permisos SELECT.
Otorgar permiso al usuario
Necesitamos otorgar los permisos SELECT para permitir que el usuario vea la información almacenada en las tablas.
Para eso, debe iniciar sesión con la cuenta administrativa de SQL Server.
A continuación, ejecute la consulta como:
otorgar selección en las entradas a linuxhint;Una vez ejecutado, inicie sesión como usuario de linuxhint y use la instrucción SELECT.
seleccione * de las entradas;En este caso, el comando devuelve la tabla ya que el usuario tiene permisos SELECT
También puede asignar otro permiso al usuario, como insertar y eliminar como:
otorgar insertar, eliminar en las entradas a linuxhint;en este caso, el usuario de linuxhint debe tener los permisos SELECCIONAR, INSERTAR y ELIMINAR en la tabla de entradas.
Conclusión
En esta publicación, exploramos el uso del comando GRANT en SQL Server. El comando le permite asignar permisos a un principal determinado.