11.05.2013 Views

Bases de datos en MySQL

Bases de datos en MySQL

Bases de datos en MySQL

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

© FUOC • P06/M2109/02151 47 <strong>Bases</strong> <strong>de</strong> <strong>datos</strong> <strong>en</strong> <strong>MySQL</strong><br />

El comando flush privileges solicita a <strong>MySQL</strong> que vuelva a leer las tablas <strong>de</strong><br />

privilegios. En el mom<strong>en</strong>to <strong>de</strong> ejecutarse, el servidor lee la información <strong>de</strong> estas<br />

tablas sobre privilegios. Pero si se han alterado las tablas manualm<strong>en</strong>te, no<br />

se <strong>en</strong>terará <strong>de</strong> los cambios hasta que utilicemos el comando flush privileges.<br />

Tablas <strong>de</strong> la base <strong>de</strong> <strong>datos</strong> mysql<br />

Tabla Cont<strong>en</strong>ido<br />

user Cu<strong>en</strong>tas <strong>de</strong> usuario y sus privilegios globales<br />

db Privilegios sobres bases <strong>de</strong> <strong>datos</strong><br />

tables_priv Privilegios sobre tablas<br />

columns_priv Privilegios sobre columnas<br />

host Privilegios <strong>de</strong> otros equipos anfitriones sobre bases <strong>de</strong> <strong>datos</strong><br />

El acceso directo a las tablas <strong>de</strong> privilegios es útil <strong>en</strong> varios casos; por ejemplo, para<br />

borrar un usuario <strong>de</strong>l sistema <strong>en</strong> las versiones <strong>de</strong> <strong>MySQL</strong> anteriores a la 4.1.1:<br />

mysql> <strong>de</strong>lete from user<br />

-> where User = ’visitante’ and Host = ’localhost’;<br />

mysql> flush privileges;<br />

No es posible eliminar mediante un solo comando revoke todos los privilegios<br />

<strong>de</strong> un usuario.<br />

Ejemplo<br />

Se otorgan <strong>de</strong>rechos a un usuario con dos comandos grant.<br />

Observando el cont<strong>en</strong>ido <strong>de</strong> la base <strong>de</strong> <strong>datos</strong> <strong>de</strong> privilegios, po<strong>de</strong>mos <strong>en</strong>t<strong>en</strong><strong>de</strong>r el comportami<strong>en</strong>to<br />

<strong>de</strong> los comandos grant y revoke. Primero asignamos privilegios para usar el comando<br />

select al usuario visitante con dos comandos grant: el primero <strong>de</strong> ellos le permite el<br />

ingreso <strong>de</strong>s<strong>de</strong> el servidor nuestra-ong.org y el segundo le otorga el mismo tipo <strong>de</strong> privilegio,<br />

pero <strong>de</strong>s<strong>de</strong> cualquier equipo <strong>en</strong> Internet.<br />

mysql> grant select<br />

-> on *.*<br />

-> to visitante@nuestra-ong.org;<br />

Query OK, 0 rows affected (0.01 sec)<br />

mysql> grant select<br />

-> on *.*<br />

-> to visitante@’%’;<br />

Query OK, 0 rows affected (0.00 sec)<br />

Consultando la tabla user <strong>de</strong> la base <strong>de</strong> <strong>datos</strong> <strong>de</strong> privilegios, po<strong>de</strong>mos observar los valores ’Y’<br />

<strong>en</strong> la columna <strong>de</strong>l privilegio select.<br />

mysql> select user,host,select_priv from user<br />

-> where user = ’visitante’;

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!