sql >> Base de Datos >  >> RDS >> Mysql

Más información sobre los permisos de nivel de tabla de MySQL

Es muy común ver una declaración de concesión como la siguiente que da acceso a todas las tablas en una base de datos dada.

GRANT SELECT, SHOW VIEW
ON mydatabase.*
TO myreaduser@myhost IDENTIFIED BY 'somepassword';
FLUSH PRIVILEGES;

Donde mydatabase , myreaduser , myhoost y somepassword son las variables apropiadas para su base de datos. Tenga en cuenta que los FLUSH PRIVILEGES El comando restablece los privilegios de MySQL y no podrá usar las nuevas concesiones de usuario hasta que se ejecute.

Dicho usuario podrá leer y acceder a todas las tablas de una base de datos. Para este ejemplo vamos a usar la base de datos boatio que tiene 3 tablas:boats , trips y users .

mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| boats            |
| trips            |
| users            |
+------------------+
3 rows in set (0.00 sec)

Si quisiéramos crear un usuario que solo tenga acceso a los trips tabla, simplemente reemplazamos el símbolo comodín (*) que representa todas las tablas, con las tablas específicas que le gustaría (en este caso:trips ).

GRANT SELECT, SHOW VIEW
ON boatio.trips
TO myreaduser@localhost IDENTIFIED BY 'somepassword';
FLUSH PRIVILEGES;

Ahora podemos iniciar sesión como el nuevo usuario y ejecutar show tables para ver que solo tiene acceso a los trips mesa y no los otros dos. Este nuevo usuario simplemente no sabe que las otras tablas existen.

$ mysql -umyreaduser boatio -psomepassword
mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| trips            |
+------------------+
1 row in set (0.00 sec)

Para dar acceso al usuario a más tablas, simplemente vuelva a ejecutar el mismo GRANT instrucción con los nombres de tabla adicionales. Por ejemplo, lo siguiente otorgará acceso a los trips y users mesas pero no los boats .

GRANT SELECT, SHOW VIEW ON boatio.trips TO myreaduser@localhost IDENTIFIED BY 'somepassword';
GRANT SELECT, SHOW VIEW ON boatio.users TO myreaduser@localhost IDENTIFIED BY 'somepassword';
FLUSH PRIVILEGES;

Y la prueba:el usuario ahora tiene acceso a los trips y users mesas pero no boats .

$ mysql -umyreaduser boatio -psomepassword

mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| trips            |
| users            |
+------------------+
2 rows in set (0.00 sec)