You are on page 1of 13

13 Lenguaje SQL Usuarios y privilegios

^
Hasta ahora hemos usado slo el usuario 'root', que es el administrador, y que dispone
de todos los privilegios disponibles en MySQL.
Sin embargo, normalmente no ser una buena prctica dejar que todos los usuario con
acceso al servidor tengan todos los privilegios. Para conservar la integridad de los
datos y de las estructuras ser conveniente que slo algunos usuarios puedan realizar
determinadas tareas, y que otras, que requieren mayor conocimiento sobre las
estructuras de bases de datos y tablas, slo puedan realizarse por un nmero limitado y
controlado de usuarios.
Los conceptos de usuarios y privilegios estn ntimamente relacionados. No se pueden
crear usuarios sin asignarle al mismo tiempo privilegios. De hecho, la necesidad de
crear usuarios est ligada a la necesidad de limitar las acciones que tales usuarios
pueden llevar a cabo.
MySQL permite definir diferentes usuarios, y adems, asignar a cada uno
determinados privilegios en distintos niveles o categoras de ellos.
Niveles de privilegios
^
En MySQL existen cinco niveles distintos de privilegios:
Globales: se aplican al conjunto de todas las bases de datos en un servidor. Es el nivel
ms alto de privilegio, en el sentido de que su mbito es el ms general.
De base de datos: se refieren a bases de datos individuales, y por extensin, a todos
los objetos que contiene cada base de datos.
De tabla: se aplican a tablas individuales, y por lo tanto, a todas las columnas de esas
tabla.
De columna: se aplican a una columna en una tabla concreta.
De rutina: se aplican a los procedimientos almacenados. An no hemos visto nada
sobre este tema, pero en MySQL se pueden almacenar procedimietos consistentes en
varias consultas SQL.
Crear usuarios
^
Aunque en la versin 5.0.2 de MySQL existe una sentencia para crear
usuarios, CREATE USER, en versiones anteriores se usa exclusivamente la
sentenciaGRANT para crearlos.
En general es preferible usar GRANT, ya que si se crea un usuario mediante CREATE
USER, posteriormente hay que usar una sentencia GRANT para concederle privilegios.
Usando GRANT podemos crear un usuario y al mismo tiempo concederle tambin los
privilegios que tendr. La sintaxis simplificada que usaremos paraGRANT, sin
preocuparnos de temas de cifrados seguros que dejaremos ese tema para captulos
avanzados, es:
GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ...
ON
TO user [IDENTIFIED BY [PASSWORD] 'password']
[, user [IDENTIFIED BY [PASSWORD] 'password']] ...
La primera parte priv_type [(column_list)] permite definir el tipo de privilegio
concedido para determinadas columnas. La segunda ON {tbl_name | * | *.* |
db_name.*}, permite conceder privilegios en niveles globales, de base de datos o de
tablas.
Para crear un usuario sin privilegios usaremos la sentencia:
mysql> GRANT USAGE ON *.* TO anonimo IDENTIFIED BY 'clave';
Query OK, 0 rows affected (0.02 sec)
Hay que tener en cuenta que la constrasea se debe introducir entre comillas de forma
obligatoria.
Un usuario 'anonimo' podr abrir una sesin MySQL mediante una orden:
C:\mysql -h localhost -u anonimo -p
Pero no podr hacer mucho ms, ya que no tiene privilegios. No tendr, por ejemplo,
oportunidad de hacer selecciones de datos, de crear bases de datos o tablas, insertar
datos, etc.
Conceder privilegios
^
Para que un usuario pueda hacer algo ms que consultar algunas variables del sistema
debe tener algn privilegio. Lo ms simple es conceder el privilegio para seleccionar
datos de una tabla concreta. Esto se hara as:
La misma sentencia GRANT se usa para aadir privilegios a un usuario existente.
mysql> GRANT SELECT ON prueba.gente TO anonimo;
Query OK, 0 rows affected (0.02 sec)
Esta sentencia concede al usuario 'anonimo' el privilegio de ejecutar
sentencias SELECT sobre la tabla 'gente' de la base de datos 'prueba'.
Un usuario que abra una sesin y se identifique como 'anonimo' podr ejecutar estas
sentencias:
mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| prueba |
+----------+
1 row in set (0.01 sec)

mysql> USE prueba;
Database changed
mysql> SHOW TABLES;
+------------------+
| Tables_in_prueba |
+------------------+
| gente |
+------------------+
1 row in set (0.00 sec)

mysql> SELECT * FROM gente;
+----------+------------+
| nombre | fecha |
+----------+------------+
| Fulano | 1985-04-12 |
| Mengano | 1978-06-15 |
| Tulano | 2001-12-02 |
| Pegano | 1993-02-10 |
| Pimplano | 1978-06-15 |
| Frutano | 1985-04-12 |
+----------+------------+
6 rows in set (0.05 sec)

mysql>
Como se ve, para este usuario slo existe la base de datos 'prueba' y dentro de esta, la
tabla 'gente'. Adems, podr hacer consultas sobre esa tabla, pero no podr aadir ni
modificar datos, ni por supuesto, crear o destruir tablas ni bases de datos.
Para conceder privilegios globales se usa ON *.*, para indicar que los privilegios se
conceden en todas las tablas de todas las bases de datos.
Para conceder privilegios en bases de datos se usa ON nombre_db.*, indicando que los
privilegios se conceden sobre todas las tablas de la base de datos 'nombre_db'.
Usando ON nombre_db.nombre_tabla, concedemos privilegios de nivel de tabla para
la tabla y base de datos especificada.
En cuanto a los privilegios de columna, para concederlos se usa la
sintaxis tipo_privilegio (lista_de_columnas), [tipo_privilegio (lista_de_columnas)].
Otros privilegios que se pueden conceder son:
ALL: para conceder todos los privilegios.
CREATE: permite crear nuevas tablas.
DELETE: permite usar la sentencia DELETE.
DROP: permite borrar tablas.
INSERT: permite insertar datos en tablas.
UPDATE: permite usar la sentencia UPDATE.
Para ver una lista de todos los privilegios existentes consultar la sintaxis de la
sentencia GRANT.
Se pueden conceder varios privilegios en una nica sentencia. Por ejemplo:
mysql> GRANT SELECT, UPDATE ON prueba.gente TO anonimo IDENTIFIED BY
'clave';
Query OK, 0 rows affected (0.22 sec)

mysql>
Un detalle importante es que para crear usuarios se debe tener el privilegio GRANT
OPTION, y que slo se pueden conceder privilegios que se posean.
Revocar privilegios
^
Para revocar privilegios se usa la sentencia REVOKE.
REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ...
ON
FROM user [, user] ...
La sintaxis es similar a la de GRANT, por ejemplo, para revocar el
privilegio SELECT de nuestro usuario 'anonimo', usaremos la sentencia:
mysql> REVOKE SELECT ON prueba.gente FROM anonimo;
Query OK, 0 rows affected (0.05 sec)
Mostrar los privilegios de un usuario
^
Podemos ver qu privilegios se han concedido a un usuario mediante la
sentencia SHOW GRANTS. La salida de esta sentencia es una lista de
sentenciasGRANT que se deben ejecutar para conceder los privilegios que tiene el
usuario. Por ejemplo:
mysql> SHOW GRANTS FOR anonimo;
+--------------------------------------------------------------------+
| Grants for anonimo@% |
+--------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'anonimo'@'%' IDENTIFIED BY PASSWORD '*5...' |
| GRANT SELECT ON `prueba`.`gente` TO 'anonimo'@'%' |
+--------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql>
Nombres de usuarios y contraseas
^
Como podemos ver por la salida de la sentencia SHOW GRANTS, el nombre de usuario
no se limita a un nombre simple, sino que tiene dos partes. La primera consiste en un
nombre de usuario, en nuestro ejemplo 'anonimo'. La segunda parte, que aparece
separada de la primera por el carcter '@' es un nombre de mquina (host). Este
nombre puede ser bien el de una mquina, por ejemplo, 'localhost' para referirse al
ordenador local, o cualquier otro nombre, o bien una ip.
La parte de la mquina es opcional, y si como en nuestro caso, no se pone, el usuario
podr conectarse desde cualquier mquina. La salida de SHOW GRANTS lo indica
usando el comodn '%' para el nombre de la mquina.
Si creamos un usuario para una mquina o conjunto de mquinas determinado, ese
usuario no podr conectar desde otras mquinas. Por ejemplo:
mysql> GRANT USAGE ON * TO anonimo@localhost IDENTIFIED BY 'clave';
Query OK, 0 rows affected (0.00 sec)
Un usuario que se identifique como 'anonimo' slo podr entrar desde el mismo
ordenador donde se est ejecutando el servidor.
En este otro ejemplo:
mysql> GRANT USAGE ON * TO anonimo@10.28.56.15 IDENTIFIED BY 'clave';
Query OK, 0 rows affected (0.00 sec)
El usuario 'anonimo' slo puede conectarse desde un ordenador cuyo IP sea
'10.28.56.15'.
Aunque asignar una constrasea es opcional, por motivos de seguridad es
recomendable asignar siempre una.
La contrasea se puede escribir entre comillas simples cuando se crea un usuario, o se
puede usar la salida de la funcin PASSWORD() de forma literal, para evitar enviar la
clave en texto legible.
Si al aadir privilegios se usa una clave diferente en la clusula IDENTIFIED BY,
sencillamente se sustituye la contrasea por la nueva.
Borrar usuarios
^
Para eliminar usuarios se usa la sentencia DROP USER.
No se puede eliminar un usuario que tenga privilegios, por ejemplo:
mysql> DROP USER anonimo;
ERROR 1268 (HY000): Can't drop one or more of the requested users
mysql>
Para eliminar el usuario primero hay que revocar todos sus privilegios:
mysql> SHOW GRANTS FOR anonimo;
+--------------------------------------------------------------------+
| Grants for anonimo@% |
+--------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'anonimo'@'%' IDENTIFIED BY PASSWORD '*5...' |
| GRANT SELECT ON `prueba`.`gente` TO 'anonimo'@'%' |
+--------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql> REVOKE SELECT ON prueba.gente FROM anonimo;
Query OK, 0 rows affected (0.00 sec)

mysql> DROP USER anonimo;
Query OK, 0 rows affected (0.00 sec)

mysql>



Crear un usuario de base de datos (Administracin de
datos)
Escritorio Geoprocesamiento Referencia de la herramienta Caja de herramientas Administracin de datos
Resumen
La herramienta Crear un usuario de base de datos crea un usuario de base de datos con
privilegios suficientes para crear datos en la base de datos.
Uso
Esta herramienta solo se puede utilizar con Oracle, Microsoft SQL Server o PostgreSQL.
(No compatible con Windows Azure SQL Database.)
Para Oracle y SQL Server, si un inicio de sesin del sistema operativo ya existe, la
herramienta Crear un usuario de base de datos puede agregar ese inicio de sesin como un
usuario a la base de datos especificada.
Los usuarios creados en la base de datos tiene los siguientes privilegios:
DBMS Privilegios
Oracle CREATE SESSION
CREATE SEQUENCE
CREATE TRIGGER
CREATE VIEW
CREATE TABLE
SELECCIONAR EN DBA_ROLES
PostgreSQL USAGE en el esquema sde si el usuario se crea en una geodatabase o una base de datos que tiene instalado el tipo ST_Geometry
SELECT, INSERT, UPDATE y DELETE en la tabla public.geometry_columns y SELECT en la tabla public.spatial_ref_sys si tiene instalado el tipo de
geometra de PostGIS
SQL Server CREATE TABLE
CREATE PROCEDURE
CREATE VIEW
DEFINICIN DE LA VISTA
Si el inicio de sesin no existe en la instancia de SQL Server o el cluster de base de datos
de PostgreSQL, la herramienta Crear un usuario de base de datosagrega el inicio de sesin,
crea un usuario en la base de datos especificada para la base de datos de entrada y crea un
esquema para el usuario en la base de datos. La base de datos especificada se establece
como la base de datos predeterminada del usuario en SQL Server.
Si el inicio de sesin ya existe en la instancia de SQL Server, la herramienta Crear un
usuario de base de datos agrega el usuario de la base de datos que especifique para la
base de datos de entrada y crea un esquema de geocodificacin. El usuario de la base de
datos predeterminada no se modifica en SQL Server.
Si el inicio de sesin ya existe en el cluster de la base de datos PostgreSQL, la
herramienta Crear un usuario de base de datos crea un esquema de geocodificacin en la
base de datos que especifique para la base de datos de entrada.
No puede crear un usuario llamado sde con esta herramienta. El usuario sde es un usuario
administrador de la geodatabase y requiere ms privilegios de los que otorga la
herramienta Crear un usuario de base de datos.
Sintaxis
CreateDatabaseUser_management (input_database, {user_authentication_type}, user_name,
{user_password}, {role}, {tablespace_name})
Parmetro Explicacin Tipo de datos
input_database
Especifique el archivo de conexin a una base de datos o geodatabase corporativa en Oracle, PostgreSQL o SQL Server.
Asegrese de que el archivo de conexin se conecta a la base de datos como un usuario administrador de base de datos. Al
conectarse a Oracle, debe hacerlo como el usuario del sistema.
Workspace
user_authentication_type
(Opcional)
Utilice esta opcin slo si existe un inicio de sesin del sistema operativo para el que desea crear un usuario de base de datos.
Est habilitada solamente para bases de datos de Oracle y SQL Server.
DB Crear un usuario autenticado de la base de datos. Esta es la opcin predeterminada. Si el DBMS no est configurado
para permitir la autenticacin de la base de datos, no utilice esta opcin.
OSA Crear un usuario autenticado del sistema operativo. El inicio de sesin correspondiente ya debe existir. Si el DBMS
no est configurado para permitir la autenticacin del sistema operativo, no utilice esta opcin.
Boolean
user_name
Escriba un nombre para el nuevo usuario de la base de datos.
Si elige crear un usuario de base de datos para un inicio de sesin de sistema operativo, el nombre de usuario debe coincidir con
el nombre de inicio de sesin.
String
user_password
(Opcional)
Escriba una contrasea para el nuevo usuario. Se implementar la poltica de contrasea de la base de datos subyacente.
Si elige crear un usuario de base de datos para el inicio de sesin de un sistema operativo, no se requerirn entradas.
Encrypted String
role
(Opcional)
Si desea agregar el nuevo usuario a un rol de base de datos existente, escriba el nombre del rol.
String
tablespace_name
(Opcional)
Cuando cree un usuario en una base de datos de Oracle, escriba el nombre del espacio de tabla que se va a utilizar como el
espacio de tabla predeterminado para el usuario. Puede especificar un espacio de tabla preconfigurado o, si el espacio de tabla
no existe, se crear en la ubicacin de almacenamiento predeterminada de Oracle con el tamao establecido en 400 MB. Si no
se especifica, el espacio de tabla predeterminado del usuario se establece en el espacio de tabla predeterminado de Oracle.
String
Ejemplo de cdigo
Ejemplo 1 de CreateUser
Crea un usuario de base de datos en Oracle y crea un espacio de tabla predeterminado para el
usuario
#Import arcpy module
import arcpy

CreateDatabaseUser_management("C:\Documents and Settings\user1\Application
Data\ESRI\ArcCatalog\oracledb1.sde", "DB", "map", "Pam987", "sdetbs")
Ejemplo 2 de CreateUser
Crea un espacio de trabajo de entrada y el usuario de base de datos en PostgreSQL
#Import arcpy module
import arcpy

CreateDatabaseConnection_management("Database Connections", "pgconn.sde",
"POSTGRESQL", myserver, mypgdb, "DATABASE_AUTH", "ela", "3L@pwd", "SAVE_USERNAME")

CreateDatabaseUser_management("C:\Documents and Settings\u5\Application
Data\ESRI\ArcCatalog\pgconn.sde", "DB", "dataowner", "N0look")
Ejemplo 3 de CreateUser
Crea un usuario de base de datos asignado a un inicio de sesin del sistema operativo en SQL
Server
#Import arcpy module
import arcpy

CreateDatabaseUser_management("C:\Documents and Settings\u5\Application
Data\ESRI\ArcCatalog\connection_ssi.sde", "OSA", "mynet\vorhoos








5.7.2. Aadir nuevas cuentas de usuario a MySQL
Puede crear cuentas MySQL de dos formas:
Usando comandos GRANT
Manipulando las tablas de permisos MySQL directamente
El mtodo preferido es usar comandos GRANT , ya que son ms concisos y menos propenso a
errores. . GRANTest disponible desde MySQL 3.22.11; su sintaxis se describe
en Seccin 13.5.1.3, Sintaxis de GRANT y REVOKE.
Otra opcin para crear cuentas es usar uno de los diversos programas proporcionados por
terceras partes que ofrecen capacidades para administradores de MySQL. phpMyAdmin es
una de ellos.
Los siguientes ejemplos muestran cmo usar el programa cliente mysql para aadir nuevos
usuarios. Estos ejemplos asumen que los permisos se inicializan segn las pautas descritas
en Seccin 2.9.3, Hacer seguras las cuentas iniciales de MySQL. Esto significa que para
realizar cambios, debe conectar al servidor MySQL como el usuario root , y la
cuenta root debe tener el privilegio INSERT para la base de datos mysql y el permiso
administrativo RELOAD.
En primer lugar, use el programa mysql para conectar al servidor como el usuario root :
shell> mysql --user=root mysql
Si ha asignado una contrasea a la cuenta root, necesitar la opcin --password o -p para
este comandomysql y tambin para los mostrados a continuacin en esta seccin.
Tras la conexin al servidor como root, puede aadir nuevas cuentas. El siguiente comando
usa GRANT para inicializar nuevas cuentas:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
-> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
-> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost';
mysql> GRANT USAGE ON *.* TO 'dummy'@'localhost';
Las cuentas creadas con estos comandos GRANT tienen las siguientes propiedades:
Dos de las cuentas tienen un nombre de usuario de monty y una contrasea
de some_pass. Ambas cuentas son cuentas de superusuario con plenos permisos para
hacer cualquier cosa. Una cuenta ('monty'@'localhost') puede usarse slo cuando se
conecte desde el equipo local. La otra ('monty'@'%') puede usarse para conectarse
desde cualquier otro equipo. Note que es necesario tener ambas cuentas para
que monty sea capaz de conectarse desde cualquier sitio como monty. Sin la
cuenta localhost, la cuenta annima para localhostcreada
por mysql_install_db tendra precedencia cuando monty conecte desde el equipo local.
Como resultado,monty se tratara como un usuario annimo. La razn para ello es que el
usuario annimo tiene un valor ms especfico en la columna Host que la
cuenta 'monty'@'%' y por lo tanto toma precedencia en la ordenacin de la tabla user.
(La ordenacin de la tabla user se discute en Seccin 5.6.5, Control de acceso, nivel 1:
Comprobacin de la conexin.)
Una cuenta tiene un nombre de usuario de admin y no tiene contrasea. Esta cuenta
puede usarse slo desde el equipo local. Tiene los privilegios
administrativos RELOAD y PROCESS . stos permiten al usuario admin ejecutar los
comandos mysqladmin reload, mysqladmin refresh, y mysqladmin flush-xxx , as
como mysqladmin processlist . No se dan permisos para acceder a ninguna base de
datos. Puede aadir tal privilegio posteriormente mediante un comando GRANT adicional.
Una cuenta tiene un nombre de usuario de dummy sin contrasea. Esta cuenta puede
usarse slo desde el equipo local. No tiene ningn privilegio. El permiso USAGE en el
comando GRANT permite crear una cuenta sin darle ningn privilegio. Tiene el efecto de
inicializar todos los privilegios globales a 'N'. Se asume que se otorgarn privilegios
especficos posteriormente.
Como alternativa a GRANT, puede crear la misma cuenta directamente mediante
comandos INSERT y despus diciendo al servidor que recargue las tablas de permisos
usando FLUSH PRIVILEGES:
shell> mysql --user=root mysql
mysql> INSERT INTO user
-> VALUES('localhost','monty',PASSWORD('some_pass'),
-> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user
-> VALUES('%','monty',PASSWORD('some_pass'),
-> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user SET Host='localhost',User='admin',
-> Reload_priv='Y', Process_priv='Y';
mysql> INSERT INTO user (Host,User,Password)
-> VALUES('localhost','dummy','');
mysql> FLUSH PRIVILEGES;
La razn de usar FLUSH PRIVILEGES al crear cuantas con INSERT es decir al servidor que
vuelva a leer las tablas de permisos. De otro modo, los cambios no se tienen en cuenta hasta
que se reinicie el servidor. ConGRANT, FLUSH PRIVILEGES no es necesario.
La razn para usar la funcin PASSWORD() con INSERT es cifrar las contraseas. El
comando GRANT cifra la contrasea, as que PASSWORD() no es necesario.
El valor 'Y' activa permisos para las cuentas. Para la cuenta admin , puede emplear la
sintaxis ms clara extendida INSERT usando SET.
En el comando INSERT para la cuenta dummy account, slo las columnas Host, User,
y Password en el registro de la tabla user tienen valores asignados. Ninguna de las columnas
de permisos se asignan explcitamente, as que MySQL les asigna a todas el valor por defecto
de 'N'. Esto es equivalente al funcionamiento de GRANT USAGE.
Para inicializar una cuenta de super usuario, slo es necesario crear una entrada en la
tabla user con las columnas de permisos inicializadas a 'Y'. Los privilegios de la
tabla user son globales, as que no se necesitan registros en ninguna de las otras tablas de
permisos.
Los siguientes ejemplos crean tres cuentas y les dan acceso a bases de datos especficas.
Cada una de ellas tiene un nombre de usuario custom y contrasea obscure.
Para crear las cuentas con GRANT, use los siguientes comandos:
shell> mysql --user=root mysql
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
-> ON bankaccount.*
-> TO 'custom'@'localhost'
-> IDENTIFIED BY 'obscure';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
-> ON expenses.*
-> TO 'custom'@'whitehouse.gov'
-> IDENTIFIED BY 'obscure';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
-> ON customer.*
-> TO 'custom'@'server.domain'
-> IDENTIFIED BY 'obscure';
Las tres cuentas pueden usarse de la siguiente manera:
La primera cuenta puede acceder a la base de datos bankaccount, pero slo desde el
equipo local.
La segunda cuenta puede acceder la base de datos expenses, pero slo desde el
equipo whitehouse.gov.
La tercera cuenta puede acceder la base de datos customer, pero slo desde el
equipo server.domain.
Para inicializar las cuentas custom sin usar GRANT, use los comandos INSERT como se
explica para modificar las tablas de permisos directamente:
shell> mysql --user=root mysql
mysql> INSERT INTO user (Host,User,Password)
-> VALUES('localhost','custom',PASSWORD('obscure'));
mysql> INSERT INTO user (Host,User,Password)
-> VALUES('whitehouse.gov','custom',PASSWORD('obscure'));
mysql> INSERT INTO user (Host,User,Password)
-> VALUES('server.domain','custom',PASSWORD('obscure'));
mysql> INSERT INTO db
-> (Host,Db,User,Select_priv,Insert_priv,
-> Update_priv,Delete_priv,Create_priv,Drop_priv)
-> VALUES('localhost','bankaccount','custom',
-> 'Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO db
-> (Host,Db,User,Select_priv,Insert_priv,
-> Update_priv,Delete_priv,Create_priv,Drop_priv)
-> VALUES('whitehouse.gov','expenses','custom',
-> 'Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO db
-> (Host,Db,User,Select_priv,Insert_priv,
-> Update_priv,Delete_priv,Create_priv,Drop_priv)
-> VALUES('server.domain','customer','custom',
-> 'Y','Y','Y','Y','Y','Y');
mysql> FLUSH PRIVILEGES;
Los primeros tres comandos INSERT aaden registros en la tabla user que permiten al
usuario custom conectar desde los equipos con la contrasea dada, pero no otorga privilegios
blobales (todos los privilegios se inicializan al valor por defecto 'N'). Los siguientes tres
comandos INSERT aaden registros en la tabla db que otorgan privilegios a custom para las
bases de datos bankaccount, expenses, y customer, pero slo cuando se accede desde los
equipos apropiados. Como siempre, cuando modifique las tablas de permisos directamente,
debe decirle al servidor que las recargue con FLUSH PRIVILEGES para que los cambios en
los permisos tengan efecto.
Si quiere dar a un usuario especfico acceso desde todas las mquinas dentro de un dominio
dado (por ejemplo,mydomain.com), puede realizar un comando GRANT que use el carcter
comodn '%' en la parte del equipo del nombre de cuenta:
mysql> GRANT ...
-> ON *.*
-> TO 'myname'@'%.mydomain.com'
-> IDENTIFIED BY 'mypass';
Para hacer lo mismo modificando las tablas de permisos directamente, haga lo siguiente:
mysql> INSERT INTO user (Host,User,Password,...)
-> VALUES('%.mydomain.com','myname',PASSWORD('mypass'),...);
mysql> FLUSH PRIVILEGES;





Trabajo de la materia competencia
http://www.youtube.com/watch?v=DjDooUig3_M

http://www.youtube.com/watch?v=wePYSTOaEnY

You might also like