Upload
kike-zetina
View
20
Download
0
Embed Size (px)
Citation preview
13 Lenguaje SQL Usuarios y privilegios^
Hasta ahora hemos usado sólo el usuario 'root', que es el administrador, y que dispone de todos los privilegios disponibles en MySQL.
Sin embargo, normalmente no será una buena práctica 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 sólo algunos usuarios puedan realizar determinadas tareas, y que otras, que requieren mayor conocimiento sobre las estructuras de bases de datos y tablas, sólo puedan realizarse por un número limitado y controlado de usuarios.
Los conceptos de usuarios y privilegios están í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 además, asignar a cada uno determinados privilegios en distintos niveles o categorías 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 más alto de privilegio, en el sentido de que su ámbito es el más general.De base de datos: se refieren a bases de datos individuales, y por extensión, 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. Aún no hemos visto nada sobre este tema, pero en MySQL se pueden almacenar procedimietos consistentes en varias consultas SQL.
Crear usuarios^
Aunque en la versión 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 también los privilegios que tendrá. La sintaxis simplificada que usaremos paraGRANT, sin preocuparnos de temas de cifrados seguros que dejaremos ese tema para capítulos 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 constraseña se debe introducir entre comillas de forma obligatoria.
Un usuario 'anonimo' podrá abrir una sesión MySQL mediante una orden:
C:\mysql -h localhost -u anonimo -p
Pero no podrá hacer mucho más, 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 más que consultar algunas variables del sistema debe tener algún privilegio. Lo más simple es conceder el privilegio para seleccionar datos de una tabla concreta. Esto se haría así:
La misma sentencia GRANT se usa para añadir 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 sesión 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 sólo existe la base de datos 'prueba' y dentro de esta, la tabla 'gente'. Además, podrá hacer consultas sobre esa tabla, pero no podrá añadir 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 sólo 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 contraseñas^
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 carácter '@' es un nombre de máquina (host). Este nombre puede ser bien el de una máquina, por ejemplo, 'localhost' para referirse al ordenador local, o cualquier otro nombre, o bien una ip.La parte de la máquina es opcional, y si como en nuestro caso, no se pone, el usuario podrá conectarse desde cualquier máquina. La salida de SHOW GRANTS lo indica usando el comodín '%' para el nombre de la máquina.
Si creamos un usuario para una máquina o conjunto de máquinas determinado, ese usuario no podrá conectar desde otras máquinas. 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' sólo podrá entrar desde el mismo ordenador donde se está ejecutando el servidor.
En este otro ejemplo:
mysql> GRANT USAGE ON * TO [email protected] IDENTIFIED BY 'clave';
Query OK, 0 rows affected (0.00 sec)
El usuario 'anonimo' sólo puede conectarse desde un ordenador cuyo IP sea '10.28.56.15'.
Aunque asignar una constraseña es opcional, por motivos de seguridad es recomendable asignar siempre una.
La contraseña se puede escribir entre comillas simples cuando se crea un usuario, o se puede usar la salida de la función PASSWORD() de forma literal, para evitar enviar la clave en texto legible.Si al añadir privilegios se usa una clave diferente en la cláusula IDENTIFIED BY, sencillamente se sustituye la contraseña 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 (Administración de datos)Escritorio » Geoprocesamiento » Referencia de la herramienta » Caja de herramientas Administración de datos
ResumenLa 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 sesión del sistema operativo ya existe, la
herramienta Crear un usuario de base de datos puede agregar ese inicio de sesión 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 SESSIONCREATE SEQUENCECREATE TRIGGERCREATE VIEWCREATE TABLESELECCIONAR 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_GeometrySELECT, 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 geometría de PostGIS
SQL Server CREATE TABLECREATE PROCEDURECREATE VIEWDEFINICIÓN DE LA VISTA
Si el inicio de sesión 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 sesión, 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 sesión 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 geocodificación. El usuario de la base de datos predeterminada no se modifica en SQL Server.
Si el inicio de sesión ya existe en el cluster de la base de datos PostgreSQL, la herramienta Crear un usuario de base de datos crea un esquema de geocodificación 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 más privilegios de los que otorga la herramienta Crear un usuario de base de datos.
SintaxisCreateDatabaseUser_management (input_database, {user_authentication_type}, user_name, {user_password}, {role}, {tablespace_name})
Parámetro Explicación
input_databaseEspecifique el archivo de conexión a una base de datos o geodatabase corporativa en Oracle, PostgreSQL o SQL Server. Asegúrese de que el archivo de conexión 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.
user_authentication_type
(Opcional)
Utilice esta opción sólo si existe un inicio de sesión 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 opción predeterminada. Si el DBMS no está configurado para permitir la autenticación de la base de datos, no utilice esta opción.
OSA —Crear un usuario autenticado del sistema operativo. El inicio de sesión correspondiente ya debe existir. Si el DBMS no está configurado para permitir la autenticación del sistema operativo, no utilice esta opción.
user_nameEscriba un nombre para el nuevo usuario de la base de datos.
Si elige crear un usuario de base de datos para un inicio de sesión de sistema operativo, el nombre de usuario debe coincidir con el nombre de inicio de sesión.
user_passwordEscriba una contraseña para el nuevo usuario. Se implementará la política de contraseña de la base de datos subyacente.
Si elige crear un usuario de base de datos para el inicio de sesión de un sistema operativo, no se requerirán entradas.
(Opcional)
role
(Opcional)
Si desea agregar el nuevo usuario a un rol de base de datos existente, escriba el nombre del rol.
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 ubicación de almacenamiento predeterminada de Oracle con el tamaño 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.
Ejemplo de códigoEjemplo 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 sesión 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. Añadir nuevas cuentas de usuario a MySQL
Puede crear cuentas MySQL de dos formas:
Usando comandos GRANT
Manipulando las tablas de permisos MySQL directamente
El método preferido es usar comandos GRANT , ya que son más concisos y menos propenso a
errores. . GRANTestá disponible desde MySQL 3.22.11; su sintaxis se describe
en Sección 13.5.1.3, “Sintaxis de GRANT y REVOKE ” .
Otra opción 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 cómo usar el programa cliente mysql para añadir nuevos
usuarios. Estos ejemplos asumen que los permisos se inicializan según las pautas descritas
en Sección 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 contraseña a la cuenta root, necesitará la opción --password o -p para
este comandomysql y también para los mostrados a continuación en esta sección.
Tras la conexión al servidor como root, puede añadir 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 contraseña
de some_pass. Ambas cuentas son cuentas de superusuario con plenos permisos para
hacer cualquier cosa. Una cuenta ('monty'@'localhost') puede usarse sólo 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 anónima para localhostcreada
por mysql_install_db tendría precedencia cuando monty conecte desde el equipo local.
Como resultado,monty se trataría como un usuario anónimo. La razón para ello es que el
usuario anónimo tiene un valor más específico en la columna Host que la
cuenta 'monty'@'%' y por lo tanto toma precedencia en la ordenación de la tabla user.
(La ordenación de la tabla user se discute en Sección 5.6.5, “Control de acceso, nivel 1:
Comprobación de la conexión”.)
Una cuenta tiene un nombre de usuario de admin y no tiene contraseña. Esta cuenta
puede usarse sólo 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 añadir tal privilegio posteriormente mediante un comando GRANT adicional.
Una cuenta tiene un nombre de usuario de dummy sin contraseña. Esta cuenta puede
usarse sólo desde el equipo local. No tiene ningún privilegio. El permiso USAGE en el
comando GRANT permite crear una cuenta sin darle ningún privilegio. Tiene el efecto de
inicializar todos los privilegios globales a 'N'. Se asume que se otorgarán privilegios
específicos posteriormente.
Como alternativa a GRANT, puede crear la misma cuenta directamente mediante
comandos INSERT y después 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 razón 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 razón para usar la función PASSWORD() con INSERT es cifrar las contraseñas. El
comando GRANT cifra la contraseña, así que PASSWORD() no es necesario.
El valor 'Y' activa permisos para las cuentas. Para la cuenta admin , puede emplear la
sintaxis más clara extendida INSERT usando SET.
En el comando INSERT para la cuenta dummy account, sólo las columnas Host, User,
y Password en el registro de la tabla user tienen valores asignados. Ninguna de las columnas
de permisos se asignan explícitamente, 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, sólo 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 específicas.
Cada una de ellas tiene un nombre de usuario custom y contraseña 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 sólo desde el
equipo local.
La segunda cuenta puede acceder la base de datos expenses, pero sólo desde el
equipo whitehouse.gov.
La tercera cuenta puede acceder la base de datos customer, pero sólo 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 añaden registros en la tabla user que permiten al
usuario custom conectar desde los equipos con la contraseña dada, pero no otorga privilegios
blobales (todos los privilegios se inicializan al valor por defecto 'N'). Los siguientes tres
comandos INSERT añaden registros en la tabla db que otorgan privilegios a custom para las
bases de datos bankaccount, expenses, y customer, pero sólo 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 específico acceso desde todas las máquinas dentro de un dominio
dado (por ejemplo,mydomain.com), puede realizar un comando GRANT que use el carácter
comodín '%' 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