* Nombre de usuario:

Cuando creamos un nuevo usuario en MySQL, éste queda identificado por su
nombre de usuario más el nombre o IP del ordenador desde el cual hemos dicho
que accederá (podemos utilizar el carácter comodín ‘%’ para representar
varios ordenadores). La sintaxis es:

usuario@ordenador

Ejemplos de usuarios:

pepito
pepito@’%’
pepito@localhost
pepito@’192.168.0.%’
pepito@’%.midominio.org’

Por ejemplo, el usuario ‘pepito@localhost’ se considera diferente del usuario
‘pepito@192.168.0.%’, aunque tengan el mismo nombre ‘pepito’, y por lo tanto
pueden tener permisos diferentes.

* Ver los usuarios:
SELECT User,Host,Password FROM mysql.user;

* Crear un usuario:
CREATE USER usuario [IDENTIFIED BY ‘contraseña’] [, usuario [IDENTIFIED BY ‘contraseña’]] …

Ejemplos:
CREATE USER Pepito IDENTIFIED BY ‘Griyo’;
CREATE USER Anonimo@localhost;
CREATE USER Alumno@’192.168.0.%’ IDENTIFIED BY ‘Alumno’;

* Borrar un usuario:
DROP USER usuario [, usuario] …

Ejemplos:
DROP USER Anonimo;

* Cambiar el nombre de un usuario:
RENAME USER viejo_usuario TO nuevo_usuario [, viejo_usuario TO nuevo_usuario] …

Ejemplos:
RENAME USER Pepito TO Pepito@127.0.0.1;

* Cambiar la contraseña de un usuario:
SET PASSWORD FOR usuario = PASSWORD(‘contraseña’)

Ejemplos:
SET PASSWORD FOR Pepito = PASSWORD(‘Grillo’)

* Ver los privilegios de un usuario:
SHOW GRANTS FOR usuario

Ejemplos:
SHOW GRANTS FOR root;
SHOW GRANTS FOR Pepito;

* Otorga privilegios a un usuario:
GRANT privilegios ON base_datos.tabla(columnas) TO usuario;

Sintaxis ampliada:
GRANT privilegios [(columnas)] [, privilegios [(columnas)]] …
ON [objecto] {tabla | * | *.* | basedatos.*}
TO usuario [IDENTIFIED BY [PASSWORD] ‘contraseña’] [, usuario [IDENTIFIED BY [PASSWORD] ‘contraseña’]] …
[REQUIRE NONE | [{SSL| X509}] [CIPHER ‘cipher’ [AND]] [ISSUER ‘issuer’ [AND]] [SUBJECT ‘subject’]]
[WITH opcion [opcion] …]

privilegios = ALL, ALTER, CREATE, CREATE USER, CREATE VIEW, DELETE, DROP, EXECUTE, INDEX, INSERT,
LOCK TABLES, RELOAD, SELECT, SUPER, UPDATE, GRANT OPTION, …

objecto = TABLE | FUNCTION | PROCEDURE

opcion = GRANT OPTION
| MAX_QUERIES_PER_HOUR count
| MAX_UPDATES_PER_HOUR count
| MAX_CONNECTIONS_PER_HOUR count
| MAX_USER_CONNECTIONS count

Ejemplos:
GRANT UPDATE, INSERT, SELECT ON world.City TO pepito@localhost;
GRANT UPDATE, INSERT, SELECT ON world.City TO fulanito@localhost IDENTIFIED BY ‘nuevapasswd’, tu@equipo.remoto.com;
GRANT UPDATE, INSERT, SELECT ON world.Country TO pepito@’%.empresa.com’, fulanito@’%’, menganito;
GRANT UPDATE, INSERT, SELECT ON world.Country TO pepito@192.168.10.111, fulanito@’192.168.10.%’, menganito;
GRANT UPDATE(Population), SELECT(Name, Population) ON world.Country TO pepito@localhost;
GRANT SELECT ON world.* TO pepito@’%’ REQUIRE ssl;
GRANT SELECT ON world.* TO pepito@’%’ WITH MAX_CONECTIONS_PER_HOUR 3 MAX_QUERIES_PER_HOUR 300 MAX_UPDATES_PER_HOUR 30;
GRANT ALL ON *.* TO operador@localhost
GRANT ALL ON *.* TO operador@localhost WITH GRANT OPTION;

* Elimina privilegios de un usuario:
REVOKE privilegios ON base_datos.tabla(columnas) FROM usuario;

Sintaxis ampliada:
REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] …
ON [object_type] {tbl_name | * | *.* | db_name.*} FROM user [, user] …

REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] …

Ejemplos:
REVOKE ALL ON *.* FROM pepito@localhost;

* Todos los privilegios se guardan en las tablas ‘user’, ‘db’, ‘tables-priv’,
‘columns_priv’ y ‘host’ de la base de datos ‘mysql’. Se pueden realizar las
modificaciones directamente sobre estas tablas, para obtener los mismos
resultados que con GRANT, REVOKE, DROP o SET PASSWORD:

USE mysql;
SHOW TABLES;
DESCRIBE user;
DESCRIBE db;
DESCRIBE tables_priv;
SELECT User, Host, Select_priv FROM user WHERE User = ‘pepito’;
UPDATE user SET Password = PASSWORD(‘nuevapasswd’) WHERE User = ‘pepito’ AND Host = ‘localhost’;
FLUSH PRIVILEGES;
DELETE FROM user WHERE User = ‘pepito’ AND Host = ‘localhost’;
FLUSH PRIVILEGES;
DELETE FROM user WHERE Password = ”;
FLUSH PRIVILEGES;

* Podemos iniciar el servidor pidiéndole que no tenga en cuenta los privilegios
otorgados a los usuarios. Por ejemplo, si hemos olvidado la contraseña del
administrador de la base de datos y necesitamos poner una nueva:

mysqld –skip-grant-tables –skip-networking
mysql -e “UPDATE mysql.user SET Password = PASSWORD(‘nuevo’) WHERE User = ‘root'”

* De nada sirve controlar los privilegios de los usuarios dentro del servidor
de bases de datos si fuera del servidor, en el entorno del sistema operativo,
estos usuarios tienen libre acceso al sistema de ficheros. Para evitarlo
debemos vigilar los permisos de acceso de los siguientes archivos:
– Las bases de datos y sus tablas, para que usuarios no autorizados no puedan
acceder a ellas directamente.
– Ficheros de logs y de estado, para que usuarios no autorizados no puedan
acceder a ellas directamente.
– Ficheros de configuracion, para que usuarios no autorizados no puedan
reemplazarlos o modificarlos.
– Programas y scripts que manejan y acceden a bases de datos, para que
los usuarios no puedan reemplazarlos o modificarlos.

* Una capa adicional de seguridad nos la da encriptar los datos que escribimos
y leemos de la base de datos, mediante las funciones ENCODE(), DECODE(),
DES_ENCRYPT(), DES_DECRYPT(), AES_ENCRYPT(), AES_DECRYPT(), y PASSWORD();

* Lecturas para profundizar:
– http://dev.mysql.com/doc/refman/5.0/es/user-account-management.html
– http://dev.mysql.com/doc/refman/5.0/es/account-management-sql.html
– http://dev.mysql.com/doc/refman/5.0/es/privilege-system.html
– http://dev.mysql.com/doc/refman/5.0/es/encryption-functions.html

 

What is a Weblet A weblet is similar to, but different in several ways from a minisite or microsite. Although a weblet is similar in that it is a type of Internet web ...
12% de los usuarios de iPad ya no usa su portátil Las tabletas no solo están canibalizando a los PC en el segmento de consumo, sino también en el profesional. Así lo revela un estudio publicado por ID...
Facebook arranca un sistema que permite pagar para promover los mensajes en los muros En busca de ganar dinero, atraer inversionistas y salir a la bolsa con éxito a fin de mes, en Facebook están probando una nueva función llamada “Highl...
Métodos útiles para JavaScript Sugar.js es una biblioteca que tiene como objetivo facilitar el desarrollo de JavaScript ampliando sus objetos nativos con métodos útiles e intuitivos...
Conseguir Empleo Mediante Facebook.. es posible? Sepa como hacerlo.. La tarea de encontrar un puesto de trabajo ha sufrido distintos cambios a lo largo de los últimos tiempos de la mano de los medios de comunicación soc...
Ranking Sistemas Operativos abril 2013 Windows 7 consolida su posición como el sistema operativo más usado en todo el mundo por encima del vetusto XP y del nuevo Windows 8. 17/05/2013 - ...
jQuery 1.5.2 disponible jQuery 1.5.2 es un lanzamiento de mantenimiento de la recién estrenada versión estable de la librería de funciones JavaScript con la que reducir el ti...
Facebook ya tiene mas de 1000 millones de usuarios La red social que comenzó como una comunidad de estudiantes ya tiene la misma cantidad de usuario que la sexta parte de los habitantes de todo el mund...
Estudio revela Porque Usamos Facebook La Universidad de Boston ha realizado un estudio para intentar discernir cuáles son las razones por las cuales la gente usa la redes sociales y en par...
Google lanza una guía de estilo para desarrolladores de Android 700.000 nuevos dispositivos con el sistema operativo Android son activados cada día y mientras su plataforma sigue expandiéndose desde la firma de la ...
ADMINISTRACIÓN DE USUARIOS EN MYSQL
Tagged on: