Una cuenta MySQL se define en términos de un nombre de usuario y el equipo o equipos desde los que el usuario puede conectar al servidor. La cuenta también tiene una contraseña. Hay varias diferencias entre cómo se usan los nombres de usuario y contraseñas en MySQL y cómo los usa el sistema operativo:
Los nombres de usuario, tal como los usa MySQL para
autentificación, no tienen nada que ver con los nombres de
usuario (nombres de logueo) tal y como los usa Windows o
Unix. En Unix, la mayoría de clientes MySQL por defecto
tratan de loguear usando el nombre de usuario Unix como el
nombre de usuario MySQL, pero eso es sólo como
conveniencia. El comportamiento por defecto puede cambiarse
fácilmente, ya que el programa clienet permite especificar
cualquier nombre de usuario con la opción
-u
o --user
. Como
esto significa que cualquiera puede intentar conectar al
servidor usando cualquier nombre de usuario, no puede hacer
una base de datos segura de ninguna forma a no ser que todas
las cuentas MySQL tengan contraseña. Cualquiera que
especifique un nombre de usuario para una cuenta que no
tenga contraseña puede conectar al servidor.
Nombre de usuarios en MySQL pueden tener como máximo 16
caracteres de longitudo. Este límite está hard-codeado en
los servidores y clientes MySQL, y tratar de evitarlo
mediante la modificación de las tablas en la base de datos
mysql
no funciona .
Nota: Nunca debe
alterar ninguna de las tablas en la base de datos
mysql
de ninguna forma excepto mediante
la ejecución de los scpripts proporcionados expresamente
para este propósito con la distribución MySQL. Tratar de
redefinir las tablas de sistema MySQL de cualquier otra
forma da como resultado un comportamiento indefinido (y no
soportado).
Nombres de usuario en el sistema operativo están completamente desligados de los nombres de usuario de MySQL y pueden tener longitud máxima diferente. Por ejemplo, los nombres de usuario Unix típicamente están limitados a 8 caracteres.
Las contraseñas MySQL no tienen nada que ver con las contraseñas para loguear en el sistema operativo. No hay una conexión necesaria entre la contraseña que usa para entrar en una máquina Windows o Unix y la contraseña usada para acceder al servidor MySQL en esa máquina.
MySQL encripta contraseñas usando su propio algoritmo. Esta
encriptación es diferente de la usada durante el proceso de
logueo de Unix. La encriptación de contraseña es la misma
que la implementada en la función
PASSWORD()
. La encriptación de
contraseñas Unix es la misma que la implementada por la
función SQL ENCRYPT()
. Consulte la
descripción de las funciones PASSWORD()
y ENCRYPT()
en
Sección 12.9.2, “Funciones de encriptación”. Desde la versión
4.1, MySQL usa un método más fuerte de autenticación que
tiene una mejor protección de contraseña durante el
proceso de conexión que en versiones anteriores. Es seguro
incluso si los paquetes TCP/IP se esnifan o la base de datos
mysql
se captura. (En versiones
anteriores , incluso aunque las contraseñas se guardan
encriptadas en la tabla user
, se podía
usar conocimiento de la contraseña encriptada para conectar
al servidor MySQL.)
Cuando instala MySQL, las tablas de permisos se inicializan con
un conjunto inicial de cuentas. Estas cuentas tienen nombres y
privilegios de acceso descritos en
Sección 2.9.3, “Hacer seguras las cuentas iniciales de MySQL”, que discute cómo
asignarles contraseñas. Así mismo, normalmente inicialice,
modifique y borre cuentas mediante los comandos
GRANT
y REVOKE
. Consulte
Sección 13.5.1.3, “Sintaxis de GRANT
y REVOKE
”.
Cuando conecta a un servidor MySQL con un cliente de líneas de comando, puede especificar el nombre de usuario y contraseña para la cuenta que desea usar:
shell> mysql --user=monty --password=guess
db_name
Si prefiere opciones cortas, el comando es así:
shell> mysql -u monty -pguess
db_name
No deben haber espacios entre la opción
-p
y el valor de contraseña a continuación.
Consulte Sección 5.6.4, “Conectarse al servidor MySQL”.
El comando precedente incluye el valor de la contraseña en la
línea de comando, lo que puede ser un riesgo de seguridad.
Consulte Sección 5.7.6, “Guardar una contraseña de forma segura”. Para evitarlo,
especifique la opción --password
o
-p
sin ningún valor de contraseña:
shell> mysql --user=monty --passworddb_name
shell> mysql -u monty -pdb_name
A continuación, el programa cliente muestra un prompt y espera
a que introduzca la contraseña. (En estos ejemplos,
db_name
no se
interpreta como contraseña, ya que está separado de la
precedente opción de contraseña con un espacio.)
En algunos sistemas, la llamada que MySQL usa para pedir una contraseña automáticamente limita la contraseña a ocho caracteres. Este es un problema con la librería de sistema, no con MySQL. Internamente, MySQL no tienen ningún límite para la longitud de la contraseña. Para solventar este problema, cambie su contraseña MySQL a un valor que tenga ocho o menos caracteres, o ponga su contraseña en un fichero de opciones.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.