Como configurar el servidor y el cliente para mysql
Como crear usarios y asignarlos a las base de datos en mysql
Como manipular los privilegios de los usuario en la base de datos en mysq
como conectarse a una base de datos que esta en un servido remoto en mysql
SEGURIDAD.
Esquemas de Autorización.
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 usuarios 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 acabo. 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 procedimientos
consistentes en varias consultas SQL.
El Sistema de Privilegios de Acceso de MySQL.
MySQL tiene un
sistema avanzado pero no estándar de seguridad y privilegios. Por lo que a
continuación se describe su funcionamiento.
Qué hace el Sistema de Privilegios.
La función
primaria del sistema de privilegios de MySQL es autenticar un usuario
conectándose desde un equipo dado, y asociar dicho usuario con privilegios en
una base de datos tales como SELECT, INSERT, UPDATE, y DELETE. Funcionalidad
adicional incluye la habilidad de tener usuarios anónimos y de dar privilegios
para funciones específicas de MySQL tales como LOAD DATA INFILE y operaciones
administrativas.
Cómo Funciona el Sistema de Privilegios.
El sistema de
privilegios de MySQL asegura que todos los usuarios pueden ejecutar sólo la
operación permitida a los mismos. Como usuario, cuando conecta a un servidor
MySQL, su identidad se determina mediante el equipo desde el que se conecta y
el nombre de usuario que especifique. Cuando se efectúe peticiones tras
conectar, el sistema le otorga privilegios acorde a su identidad y lo que
quiera hacer.
MySQL
considera tanto su nombre de usuario y su equipo a la hora de identificarle, ya
que no hay razón para asumir que un nombre de usuario pertenece a la misma
persona en cualquier sitio de Internet. Por ejemplo, el usuario joe que conecta
desde office.com no tiene porqué ser la misma persona que el usuario joe que
conecta desde elsewhere.com. MySQL trata esto permitiendo distinguir usuarios
en diferentes equipos que tienen el mismo nombre. Puede otorgar un conjunto de
privilegios para conexiones de joe desde office.com, y un conjunto distinto
para conexiones de joe desde elsewhere.com.
El control de
acceso de MySQL implica dos etapas:
·
Etapa 1: El servidor
comprueba si debe permitirle conectarse.
·
Etapa 2: Asumiendo
que se conecta, el servidor comprueba cada comando que ejecuta para ver si
tiene suficientes permisos para hacerlo. Por ejemplo, si intenta seleccionar
registros de una tabla en una base de datos o eliminar una tabla de la base de
datos, el servidor verifica que tenga el permiso SELECT para la tabla o el
permiso DROP para la base de datos.
Si los
permisos cambian (por usted mismo o alguien distinto) mientras está conectado,
estos cambios no tienen porqué tener efecto inmediatamente para el siguiente
comando que ejecute. El servidor guarda información de privilegios en las
tablas de permisos de la base de datos mysql (esto es, en la base de datos
llamada mysql). El servidor MySQL lee el contenido de dichas tablas en memoria
cuando arranca y las vuelve a leer.
Las decisiones
acerca de control de acceso se basan en las copias en memoria de las tablas de
permisos. Normalmente, manipula los contenidos de las tablas de permisos indirectamente
usando los comandos GRANT y REVOKE para configurar cuentas y controlar los
privilegios disponibles para cada una. La discusión aquí describe la estructura
subyacente de las tablas de permisos y cómo el servidor usa los contenidos
cuando interactúa con clientes.
El servidor
usa las tablas user, db, y host en la base de datos mysql en ambas etapas de
control de acceso. Las columnas en estas tablas de permisos se muestran a
continuación:
Durante la
segunda etapa de control de acceso, el servidor efectúa una verificación de
petición para asegurar que cada cliente tiene suficientes privilegios para cada
petición que recibe. Adicionalmente las tablas de permisos user, db, y host ,
el servidor puede consultar las tablas tables_priv y columns_priv para
peticiones que impliquen tablas. Las tablas tables_priv y columns_priv proveen
de un control de privilegios más fino a nivel de tabla y columna. Tienen las siguientes columnas:
Las columnas Timestamp
y Grantor actualmente no se usan y no se discuten más en esta sección. Para
verificación de peticiones que impliquen rutinas almacenadas, el servidor puede
consultar la tabla procs_priv. Esta
tabla tiene las siguientes columnas:
Cada tabla de
permisos contiene columnas de alcance y columnas de privilegios:
·
Las columnas de
alcance determinan el alcance de cada entrada (registro) en las tablas; esto
es, el contexto en que el registro se aplica. Por ejemplo, un registro de la
tabla user con los valores Host y User de 'thomas.loc.gov' y 'bob' se usarían
para autenticar conexiones hechas al servidor desde el equipo thomas.loc.gov por
un cliente que especifique un nombre de usuario de bob. De forma similar, un
registro de la tabla db con las columnas Host, User, y Db con valores 'thomas.loc.gov',
'bob' y 'reports' se usaría cuando bob conectase desde el equipo thomas.loc.gov
para acceder a la base de datos reports . Las tablas tables_priv y columns_priv
contienen columnas de alcance indicando tablas o combinaciones de tabla/columna
para las que cada registro se aplica. La columna de alcance procs_priv indica
la rutina de almacenamiento que se aplica a cada registro.
·
Las columnas de
privilegios indican qué privilegios se otorgan a un registro de la tabla; esto
es, qué operaciones pueden ejecutarse. El servidor combina la información de
diversas tablas de permisos para tener una descripción completa de los permisos
de un usuario.
Las columnas
de alcance contienen cadenas de caracteres. Se declaran tal y como se muestra a
continuación; el valor por defecto es la cadena de caracteres vacía:
Con el
propósito de chequeos de acceso, las comparaciones de los valores de Host no se
tienen en cuenta mayúsculas y minúsculas. Los valores de User, Password, Db, y Table_name
son sensibles a mayúsculas y minúsuclas. Los valores de Column_name no son
sensibles a mayúsculas y minúsculas. En las tablas user, db, y host , cada
privilegio se lista en una columna separada que se declara como ENUM('N','Y')
DEFAULT 'N'. En otras palabras, cada privilegio puede estar desactivado o
activado, estando desactivados por defecto.
En las tablas tables_priv,
columns_priv, and procs_priv , las columnas de privilegios se declaran como
columnas de tipo SET. Los valores en estas columnas pueden contener cualquier
combinación de los privilegios controlados por la tabla:
Brevemente, el
servidor usa las tablas de permisos como sigue:
·
Las columnas de
alcance de la tabla user determinan si se rechazan o permiten conexiones
entrantes. Para conexiones permitidas, cualquier privilegio otorgado en la
tabla user indica los privilegios globales del usuario (superusuario). Estos
privilegios se aplican a todas las bases de datos en el servidor.
·
Las columnas de
alcance de la tabla db determinan qué usuarios pueden acceder a qué bases de
datos desde qué equipo. La columna de privilegios determina qué operaciones se
permiten. Un privilegio otorgado a nivel de base de datos se aplica a la base
de datos y a todas sus tablas.
·
La tabla host se usa
en conjunción con la tabla db cuando desea que un registro de la tabla db se
aplique a varios equipos. Por ejemplo, si quiere que un usuario sea capaz de
usar una base de datos desde varios equipos en su red, deje el valor Host vacío
en el registro de usuario de la tabladb , luego rellene la tabla host con un
registro para cada uno de estos equipos.
Nota: La tabla host no se ve afectada
por los comandos GRANT ni REVOKE. La mayoría de instalaciones MySQSL no
necesitan usar esta tabla en absoluto.
·
Las tablas tables_priv
y columns_priv son similares a la tabla db , pero son más detalladas: se
aplican a nivel de tabla y de columna en lugar de a nivel de base de datos. Un
privilegio otorgado a nivel de tabla se aplica a la tabla y a todas sus
columnas. Un privilegio otorgado a nivel de columna se aplica sólo a la columna
especificada.
·
La tabla procs_priv se
aplica a rutinas almacenadas. Un privilegio otorgado a nivel de rutina se
aplica sólo a una única rutina.
Permisos
administrativos (tales como RELOAD o SHUTDOWN) se especifican sólo en la tabla user.
Esto es debido a que las operaciones administrativas son operaciones del propio
servidor y no específicas de bases de datos, así que no hay ninguna razón para
listar estos privilegios en las otras tablas de permisos. De hecho, para
determinar si puede realizar una operación administrativa, el servidor sólo
necesita consultar la tabla user.
El privilegio FILE
también se especifica sólo en la tabla user. No es un privilegio administrativo
como tal, pero la habilidad de leer o escribir archivos en el equipo servidor
es independiente de las bases de datos a las que acceda. El servidor mysqld lee
los contenidos de las tablas de permisos en memoria cuando arranca. Puede
decirle que las vuelva a leer mediante el comando FLUSH PRIVILEGES o ejecutando
los comandos mysqladmin flush-privileges o mysqladmin reload.
Cuando modifica los contenidos de las tablas de permisos, es una buena
idea asegurarse que sus cambios configuran permisos tal y como desea. Para
consultar los permisos de una cuenta dada, use el comando SHOW GRANTS . Por
ejemplo, para determinar los permisos que se otorgan a una cuenta con valores
Host y User de pc84.example.com y bob, use este comando:
mysql> SHOW
GRANTS FOR 'bob'@'pc84.example.com';
|
Una
herramienta de diagnóstico útil es el script mysqlaccess, proporcionado
por Yves Carlier para la distribución MySQL. Invoque mysqlaccess con la
opción --help para ver cómo funciona. Note que mysqlaccess chequea
acceso usando sólo las tablas user, db, y host. No chequea los privilegios de
tabla, columna, o rutina especificados en las tablas tables_priv, columns_priv,
o procs_priv.
Privilegios de los que Provee MySQL.
La información
sobre los privilegios de las cuentas está almacenada en las tablas user, db, host,
tables_priv, columns_priv, y procs_priv de la base de datos mysql. El servidor
MySQL lee el contenido de estas tablas y lo almacena en memoria cuando se
inicia, y lo relee bajo ciertas circunstancias. Las decisiones de control de
acceso se basan en la copia en memoria de las tablas grant.
Los nombres
utilizados en las sentencias GRANT y REVOKE para referirse a privilegios se
muestran en la siguiente tabla, junto al nombre de columna asociado con cada
privilegio en las tablas grant y el contexto en que el privilegio se aplica.
Los
privilegios CREATE y DROP permiten crear nuevas bases de datos y tablas, o
eliminar las existentes. Si otorga el privilegio DROP para la base de datos mysql
a un usuario, ese usuario puede eliminar la base de datos en la que MySQL
almacena los privilegios de acceso. Los privilegios SELECT, INSERT, UPDATE,
and DELETE permiten realizar operaciones en registros de tablas existentes en
una base de datos.
Las sentencias
SELECT requieren el privilegio SELECT sólo si realmente extraen registros de
una tabla. Algunas sentencias SELECT no acceden a tablas, y pueden ser
ejecutados por tanto sin permiso para ninguna base de datos. Por ejemplo,
podría utilizar el cliente mysql como una simple calculadora para
evaluar expresiones que no hacen referencia a tablas:
mysql> SELECT 1+1;
mysql> SELECT PI()*2;
El privilegio INDEX
permite crear o eliminar índices. INDEX es aplicable a tablas existentes. Si
tiene el privilegio CREATE para una tabla, entonces puede incluir definiciones
de índices en la sentencia CREATE TABLE. El privilegio ALTER permite utilizar ALTER
TABLE para cambiar la estructura de o renombrar tablas. El privilegio CREATE
ROUTINE es necesario para crear procedimientos almacenados (funciones y
procedimientos). El privilegio ALTER ROUTINE se necesita para modificar o
eliminar procedimientos almacenados, y EXECUTE es necesario para ejecutarlos.
El privilegio GRANT permite dar a otros usuarios los privilegios que uno
mismo posee. Puede ser utilizado para bases de datos, tablas, y procedimientos
almacenados. El privilegio FILE otorga permiso para leer y escribir archivos en
la máquina del servidor utilizando las sentencias LOAD DATA INFILE y SELECT ...
INTO
OUTFILE.
Un usuario que
tiene el privilegio FILE puede leer cualquier archivo de la máquina del
servidor que sea legible por cualquiera o por el usuario que ejecuta el
servidor MySQL. (Esto implica que el usuario puede leer cualquier archivo en el
directorio de datos, porque el servidor puede acceder a cualquiera de estos
archivos.) El privilegio FILE también permite al usuario crear archivos nuevos
en cualquier directorio en que el servidor MySQL tiene acceso de escritura. Los archivos existentes no pueden ser
sobreescritos.
Los
privilegios otorgados para la propia base de datos mysql pueden utilizarse para
cambiar passwords y otra información de privilegios de acceso. Las passwords se
almacenan cifradas, así que un usuario malicioso no puede simplemente leerlas
para conocer la password. Aún así, el usuario con privlegio de escritura a la
columna Password de la tabla user puede cambiar la password de una cuenta, y
seguidamente conectarse al servidor MySQL utilizando esa cuenta.
Hay algunas
cosas que no se pueden hacer con el sistema de privilegios de MySQL:
·
No se puede
especificar explícitamente que a un usuario se le deba denegar el acceso.
·
No se puede
especificar que un usuario tenga privilegios para crear o eliminar tablas en
una base de datos, pero que no pueda crear o eliminar la propia base de datos.
Conectarse al Servidor MySQL.
Los programas
cliente de MySQL espera por lo general que usted especifique los parámetros de
conexión cuando quiere acceder a un servidor MySQL:
·
El nombre de la
máquina donde se está ejecutando el servidor MySQL
·
Su nombre de usuario
·
Su password
Por ejemplo,
el cliente mysql puede ejecutarse desde un prompt de línea de comandos
(indicado aquí por shell>) de la siguiente manera:
shell> mysql -h nombre_host -u nombre_usuario -psu_clave
Las sintaxis
alternativas de las opciones -h, -u, y -p son --host=nombre_host, --user=nombre_usuario,
y --password=su_clave. Nótese que no hay espacios entre -p o --password=
y la clave que le sigue.
Si utiliza una
opción -p o --password pero no especifica un valor para la clave, el programa
cliente le pedirá que introduzca la clave. La clave no se mostrará mientras la
introduce. Esto es más seguro que especificar la clave en la línea de comandos.
Cualquier usuario de su sistema podría ser capaz de ver la clave especificada
en la línea de comandos ejecutando un comando como ps auxww.
Los programas clientes de MySQL utilizan valores por defecto para
cualquier parámetro que no se especifique:
·
El nombre de servidor
por defecto es localhost.
·
El nombre de usuario
por defecto es ODBC en Windows y su nombre de usuario de Unix en Unix.
·
No se aplica ninguna
clave si -p no está especificado.
De esta
manera, para un usuario de Unix con un nombre de usuario de jose, todos los
siguientes comandos son equivalentes:
shell> mysql -h localhost -u jose
shell> mysql -h localhost
shell> mysql -u jose
shell> mysql
Otros clientes
MySQL se comportan de manera similar.
Puede
especificar valores diferentes para que se utilicen cuando se realiza una
conexión de manera que no tenga que introducirlos en la línea de comandos cada
vez que invoca un programa cliente. Esto puede llevarse a cabo de diversas
maneras:
·
Puede especificar los
parámetros de conexión en la sección [client] de un archivo de opciones. La
sección relevante del archivo debería tener el siguiente aspecto:
·
[client]
·
host=nombre_servidor
·
user=nombre_usuario
·
password=su_clave
·
Se Puede especificar
algunos parámetros de conexión utilizando variables de ambiente. El nombre del
servidor para mysql puede ser especificado utilizando MYSQL_HOST. El
nombre de usuario MySQL puede especificarse mediante USER (esto es para Windows
y Netware únicamente). La clave se puede especificar utilizando MYSQL_PWD,
aunque esto es inseguro.
Instrucciones GRANT y REVOKE.
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 sentencia GRANT 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 para GRANT,
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 {tbl_name | * | *.* | db_name.*}
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 {tbl_name | * | *.* | db_name.*}
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 sentencias GRANT 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 se puede
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
anonimo@10.28.56.15 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 usar 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>