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)