MySQL:: Manual de referencia de MySQL 8.0:: 4.2.4 Conexión al Servidor MySQL Mediante Opciones de Comandos
4.2.4 Conexión al Servidor MySQL Mediante Opciones de comandos
Esta sección describe el uso de opciones de línea de comandos para especificar cómo establecer conexiones al servidor MySQL, para clientes como mysql o mysqldump. Para obtener información sobre el establecimiento de conexiones mediante cadenas de conexión tipo URI o pares clave-valor, para clientes como MySQL Shell, consulte la Sección 4.2.5, «Conexión al Servidor Mediante cadenas tipo URI o Pares Clave-Valor». Para obtener información adicional si no puede conectarse, consulte la Sección 6.2.21, «Resolución de problemas al conectarse a MySQL».
Para que un programa cliente se conecte al servidor MySQL, debe utilizar los parámetros de conexión adecuados, como el nombre del host donde se ejecuta el servidor y el nombre de usuario y la contraseña de su cuenta MySQL. Cada parámetro de conexión tiene un valor predeterminado, pero puede anular los valores predeterminados según sea necesario utilizando las opciones de programa especificadas en la línea de comandos o en un archivo de opciones.
Los ejemplos aquí utilizan el programa cliente mysql, pero los principios se aplican a otros clientes como mysqldump, mysqladmin o mysqlshow.
Este comando invoca mysql sin especificar ningún parámetro de conexión explícito:
mysql
Dado que no hay opciones de parámetros, se aplican los valores predeterminados:
-
El nombre de host predeterminado es
localhost
. En Unix, esto tiene un significado especial, como se describe más adelante. -
El nombre de usuario predeterminado es
ODBC
en Windows o su nombre de inicio de sesión de Unix en Unix. -
Sin la contraseña se envía porque ni
--password
ni-p
es dado. -
Para mysql, el primer argumento sin opción se toma como el nombre de la base de datos predeterminada. Debido a que no existe tal argumento, mysql no selecciona ninguna base de datos predeterminada.
Para especificar explícitamente el nombre de host y el nombre de usuario, así como una contraseña, proporcione las opciones adecuadas en la línea de comandos. Para seleccionar una base de datos predeterminada, agregue un argumento nombre de base de datos. Ejemplos:
mysql --host=localhost --user=myname --password=password mydbmysql -h localhost -u myname -ppassword mydb
Para las opciones de contraseña, el valor de la contraseña es opcional:
-
Si utiliza un
--password
o-p
opción y especifique un valor de contraseña, no debe haber ningún espacio entre--password=
o-p
y la contraseña de la siguiente. -
Si utiliza
--password
o-p
pero no se especifica un valor de contraseña, el programa cliente se le pedirá que introduzca la contraseña. La contraseña no se muestra al introducirla. Esto es más seguro que dar la contraseña en la línea de comandos, lo que podría permitir que otros usuarios del sistema vean la línea de contraseña ejecutando un comando como ps. Consulte la Sección 6.1.2.1,»Directrices para el usuario Final para la Seguridad de contraseñas». -
Para especificar explícitamente que no hay contraseña y que el programa cliente no debe solicitarla, utilice la opción
--skip-password
.
Como se acaba de mencionar, incluir el valor de la contraseña en la línea de comandos es un riesgo de seguridad. Para evitar este riesgo, especifique la opción --password
o -p
sin el siguiente valor de contraseña:
mysql --host=localhost --user=myname --password mydbmysql -h localhost -u myname -p mydb
Cuando se da la opción --password
o -p
sin valor de contraseña, el programa cliente imprime un mensaje y espera a que introduzca la contraseña. (En estos ejemplos, mydb
no se interpreta como una contraseña porque está separada de la opción de contraseña anterior por un espacio.)
En algunos sistemas, la rutina de biblioteca que MySQL utiliza para solicitar una contraseña limita automáticamente la contraseña a ocho caracteres. Esa limitación es una propiedad de la biblioteca del sistema, no de MySQL. Internamente, MySQL no tiene ningún límite para la longitud de la contraseña. Para evitar la limitación en los sistemas afectados por ella, especifique su contraseña en un archivo de opciones (consulte la Sección 4.2.2.2, «Uso de archivos de opciones»). Otra solución es cambiar la contraseña de MySQL a un valor que tenga ocho o menos caracteres, pero con la desventaja de que las contraseñas más cortas tienden a ser menos seguras.
Los programas cliente determinan el tipo de conexión a realizar de la siguiente manera:
-
Si el host no está especificado o es
localhost
, se produce una conexión con el host local:-
En Windows, el cliente se conecta mediante memoria compartida, si el servidor iniciado con la variable de sistema
shared_memory
habilitada para admitir conexiones de memoria compartida. -
En Unix, los programas MySQL tratan el nombre de host
localhost
especialmente, de una manera que probablemente sea diferente de lo que espera en comparación con otros programas basados en red: el cliente se conecta mediante un archivo de socket Unix. La opción--socket
o la variable de entornoMYSQL_UNIX_PORT
se pueden usar para especificar el nombre del socket.
-
-
En Windows, si
host
es.
(punto), o TCP/IP no está habilitado y--socket
no está especificado o el host está vacío, el cliente se conecta mediante una tubería con nombre, si el servidor se inició con la variable de sistemanamed_pipe
habilitada para admitir conexiones de tubería con nombre. Si no se admiten conexiones de tubería con nombre o si el usuario que realiza la conexión no es miembro del grupo de Windows especificado por la variable de sistemanamed_pipe_full_access_group
, se produce un error. -
De lo contrario, la conexión utiliza TCP/IP.
La opción --protocol
le permite usar un protocolo de transporte en particular incluso cuando otras opciones normalmente resultan en el uso de un protocolo diferente. Es decir, --protocol
especifica el protocolo de transporte explícitamente y anula las reglas anteriores, incluso para localhost
.
Solo se usan o comprueban las opciones de conexión que son relevantes para el protocolo de transporte seleccionado. Se ignoran otras opciones de conexión. Por ejemplo, con --host=localhost
en Unix, el cliente intenta conectarse al servidor local utilizando un archivo de socket Unix, incluso si se da una opción --port
o -P
para especificar un número de puerto TCP/IP.
Para asegurarse de que el cliente realiza una conexión TCP/IP con el servidor local, use --host
o -h
para especificar un valor de nombre de host de 127.0.0.1
(en lugar de localhost
), o la dirección IP o el nombre del servidor local. También puede especificar explícitamente el protocolo de transporte, incluso para localhost
, utilizando la opción --protocol=TCP
. Ejemplos:
mysql --host=127.0.0.1mysql --protocol=TCP
Si el servidor está configurado para aceptar conexiones IPv6, los clientes pueden conectarse al servidor local a través de IPv6 utilizando --host=::1
. Consulte la sección 5.1.13, «Compatibilidad con IPv6».
En Windows, para forzar a un cliente MySQL a usar una conexión de tubería con nombre, especifique la opción --pipe
o --protocol=PIPE
, o especifique .
(punto) como nombre de host. Si el servidor no se inició con la variable de sistema named_pipe
habilitada para admitir conexiones de tubería con nombre o si el usuario que realiza la conexión no es miembro del grupo de Windows especificado por la variable de sistema named_pipe_full_access_group
, se produce un error. Utilice la opción --socket
para especificar el nombre de la tubería si no desea utilizar el nombre de tubería predeterminado.
Las conexiones a servidores remotos utilizan TCP / IP. Este comando se conecta al servidor que se ejecuta en remote.example.com
utilizando el número de puerto predeterminado (3306):
mysql --host=remote.example.com
Para especificar un número de puerto explícitamente, utilice la opción --port
o -P
:
mysql --host=remote.example.com --port=13306
Puede especificar un número de puerto para conexiones a un servidor local, también. Sin embargo, como se indicó anteriormente, las conexiones a localhost
en Unix utilizan un archivo de socket de forma predeterminada, por lo que, a menos que fuerce una conexión TCP/IP como se describió anteriormente, se ignorará cualquier opción que especifique un número de puerto.
Para este comando, el programa utiliza un archivo de socket en Unix y la opción--port
se ignora:
mysql --port=13306 --host=localhost
Para hacer que se use el número de puerto, forzar una conexión TCP/IP. Por ejemplo, invoque el programa de cualquiera de las siguientes maneras:
mysql --port=13306 --host=127.0.0.1mysql --port=13306 --protocol=TCP
Para obtener información adicional sobre las opciones que controlan cómo los programas cliente establecen conexiones con el servidor, consulte la Sección 4.2.3, «Opciones de comandos para conectarse al servidor».
Es posible especificar parámetros de conexión sin introducirlos en la línea de comandos cada vez que invoque un programa cliente:
-
Especifique los parámetros de conexión en la sección
de un archivo de opciones. La sección relevante del archivo podría tener este aspecto:
host=host_nameuser=user_namepassword=password
Para obtener más información, consulte la Sección 4.2.2.2, «Uso de archivos de opciones».
-
Se pueden especificar algunos parámetros de conexión utilizando variables de entorno. Ejemplos:
-
Para especificar el host para mysql, utilice
MYSQL_HOST
. -
En Windows, para especificar el nombre de usuario de MySQL, utilice
USER
.
Para obtener una lista de variables de entorno compatibles, consulte la Sección 4.9, «Variables de entorno».
-