* 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

 

Firefox 3.6 beta 4 Liberado Firefox 3.6 beta 4 es puesta a disposición de cualquier usuario interesado apenas dos semanas después de haber sido lanzada la versión beta 3, en un e...
Facebook demandará a los jefes que pidan la contraseña de sus empleados Esta semana saltó la alarma cuando un bloguero indicó que durante una entrevista de trabajo le habían pedido su contraseña de Facebook. Según se fue c...
Scripts to install Wikis MediaWiki is a free software wiki package written in PHP, originally for use on Wikipedia. It is now used by several other projects of the non-profit ...
Class Upload and Compress This class can add uploaded files to a ZIP archive. It can generate HTML for a form to upload a file. The class can handle the request when a fi...
Auto CMS se renueva y lanza temas premium para PC y Iphone Lanzando el servicio de venta de temas premium listos para usar incorporados con el administrador de contenidos web Auto CMS usted solo los descarga, ...
Opencart Module for Advanced Product Custom Display Advanced administrator interface complete with a built-in help section Give the module a description for future reference. This will only be disp...
Class Auto CMS This class can be used to generate a basic content site. It can present a form in an administration page protected with a password to let the admin...
Cómo comprarte un ordenador y no morir en el intento Decidir el tipo de ordenador que mejor encaja en nuestras necesidades no es algo que podamos dejar resuelto en unos minutos de búsqueda por In...
Guide to Webhosting Free or paid? When you start looking for a place to host your site, your first decision will be whether you will need a free or paid web host. Well...
En UK un 22% de los Usuarios se Arrepiente de comprar un Iphone Es la sorprendente conclusión a la que se ha llegado en una encuesta en el Reino Unido. Sorprendente porque si algo se ha destacado siempre de este sm...