El cliente mysql envía las instrucciones SQL al servidor o daemon MySQL (mysqld, o el que se haya elegido) y puede trabajar en modo interactivo o no interactivo. En resumen, este comando nos permite:
- Crear y eliminar bases de datos.
- Crear, eliminar y modificar tablas.
- Recuperar datos de las tablas.
- Definir las cuentas de usuarios, asignar y revocar privilegios a los usuarios.
- Añadir información de configuración y de versión del servidor.
- Gestionar la tabla de derechos.
- Administrar las conexiones clientes.
El programa cliente mysql tiene estas opciones:
- –-help, -?: visualiza un mensaje de ayuda y termina.
- -batch, -B: imprime los resultados en una línea por fila.
- –character-sets-dir=ruta de acceso: ruta de acceso a la carpeta del juego de caracteres.
- –compress, -C: comprime toda la información enviada entre el cliente y el servidor.
- –database=nombre_basedatos, -D nombre_basedatos: la base de datos que se utiliza.
- –debug [=opciones_depuración],-# [opciones_depuración]: escribe un archivo de log.
- –debug-info, -T: imprime la información de depuración al finalizar el programa.
- –default-character-set=juego_caracteres: define el juego de caracteres predeterminado.
- –execute=sentencia, -e sentencia: ejecuta la sentencia y finaliza.
- –force, -f: continua la ejecución aunque haya un error SQL.
- –host=nombre_equipo, -h nombre_equipo: conecta con el servidor MySQL en un equipo determinado.
- –HTML, -H: produce la salida HTML.
- –ignore-space, -i: no toma en cuenta los espacios después de los nombres de función.
- –local-infile[={0|1}]: habilita o deshabilita la funcionalidad de LOAD DATA INFILE a nivel LOCAL. 0 deshabilita, 1 habilita.
- –no-beep, -b: no emite sonido al producirse un error.
- –no-pager: no utiliza un paginador para visualizar la salida de la consulta.
- –no-tee: no copia la salida a un archivo.
- –one-database, -O: no toma en cuenta las sentencias salvo las de la base de datos predeterminada de la línea de comando.
- –pager[=comando]: sólo para el entorno Unix. utiliza el comando para paginar la salida de la consulta. Si no se informa ningún comando se utiliza el valor de la variable de entorno PAGER. Los paginadores válidos son: less, more, cat [>nombre_archivo].
- –password[=palabra_clave], -p[palabra_clave]: contraseña que se utiliza en la conexión al servidor.
- –port=número_puerto, -P número_puerto: número de puerto TCP/IP que se utiliza para la conexión.
- –prompt=indicador: establece el símbolo indicador del sistema. El valor predeterminado es mysql>.
- –protocol={TCP | SOCKET | PIPE | MEMORY}: protocolo de la conexión.
- –quick, -q: no almacena en caché el resultado de la consulta, imprime cada línea a medida que la recibe.
- –raw, -r: escribe los valores de las columnas sin caracteres de escape.
- –reconnect: intenta la reconexión automática con el servidor si en algún momento se pierde la conexión.
- –safe-updates, –i-am-a-dummy, -U: sólo permite UPDATE y DELETE si se informa el valor de la clave de la fila. Además permite limitar los resultados de combinaciones de tablas (join). Opción recomendable para los principiantes.
- –silent, -s: modo silencioso, que produce menos salida de información.
- –skip-column-names, -N: en los resultados no lista los nombres de columnas.
- –skip-line-numbers, -L: no imprime el número de línea del error.
- –skip-reconnect: impide la reconexión automática. Hay casos en que la reconexión automática es peligrosa: ya que en la nueva conexión no tendremos los objetos y tablas temporales de la sesión anterior y no nos interesa reconectarnos en esas conexiones.
- –socket=ruta_acceso, -S ruta_acceso: el archivo conector para la conexión.
- –table, -t: visualiza la salida en formato tabular.
- –tee=nombre_archivo: añade una copia de la salida en el archivo especificado. Sólo funciona en modo interactivo.
- –unbuffered, -n: limpia el búfer después de cada consulta.
- –user=nombre_usuario, -u nombre_usuario: nombre de usuario MySQL que se utiliza en la conexión.
- –verbose, -v: produce más información de salida. Si se utiliza repetidamente se produce cada vez más salida.
- –version, -V: informa la versión y finaliza.
- –vertical, -E: imprime las filas resultantes de la consulta de modo vertical. También se logra este efecto terminando la sentencia de consulta con \G.
- –wait, -w: si la conexión no se establece, en lugar de cancelar la ejecución de la sentencia, espera y reintenta.
Nota: Con –safe-updates se evitan los errores comunes de los principiantes y los despistados que al querer eliminar una fila de una tabla la borran totalmente por olvidarse de la cláusula WHERE. |
Además de las opciones se pueden dar valor a las variables siguientes:
- connect-timeout: cantidad de segundos de espera de la conexión (valor predeterminado es 0).
- max-allowed-packet: longitud máxima del paquete que se transmite entre cliente y servidor y viceversa (valor predeterminado es 16MB).
- max-join-size: límite para las filas de una combinación de tablas (join) cuando se utiliza –safe-updates (valor predeterminado es 1.000.000).
- net-buffer-length: tamaño máximo para un búfer en comunicación TCP/IP (valor predeterminado es 16 KB).
- select-limit: límite de sentencias select cuando se utiliza –safe-updates (valor predeterminado es 1.000).
Comando de mysql
Ya hemos visto que mysql nos permite ejecutar sentencias SQL en el servidor y para ello nos servimos de sus opciones y variables. Por su parte, el programa mysql posee un conjunto de comandos que interpreta por sí mismo.
La lista de comandos disponibles la obtenemos tecleando help:
mysql> help
Tal como sucedía con las opciones de mysql, los comandos de mysql tienen su versión abreviada (que empieza siempre por barra invertida y sigue con un carácter, normalmente una letra) y una forma extendida. La forma extendida se puede codificar sin cuidar el uso de mayúsculas y minúsculas, sin embargo, en la forma abreviada hay que respetarlo estrictamente). Éstos son los comandos:
- ? (\?): visualiza la ayuda.
- clear (\c): limpia el comando, para anular lo que se ha introducido hasta el momento.
- connect (\r): establece o restablece la conexión con el servidor; puede llevar como argumentos el nombre del servidor y el nombre de la base de datos.
- delimiter (\d): establece el delimitador de la consulta.
- edit (\e): edita el comando con $EDITOR. Sólo en Unix.
- ego (\G): envía el comando al servidor y muestra los resultados en modo vertical.
- exit (\q): finaliza mysql.
- go (\g): envía el comando al servidor.
- help (\h): visualiza la ayuda.
- nopager (\n): imprime a stdout. Sólo en Unix.
- notee (\t): no escribe en outfile.
- pager (\P): imprime los resultados de la consulta por medio de PAGER; si no se informa un valor, lo toma de la variable de entorno PAGER . Sólo en Unix.
- print (\p): imprime el comando vigente.
- prompt (\R): cambia el símbolo indicador del comando mysql.
- quit (\q): finaliza mysql.
- source (\.): ejecuta un archivo de sentencias SQL. El argumento es el nombre del archivo.
- status (\s): información del estado del servidor y de la conexión que se está utilizando.
- system (\!): ejecuta un comando del sistema. Sólo en Unix.
- tee (\T): establece el archivo outfile y los resultados de las consultas se añaden al archivo. Si no se utiliza argumento se vuelve a utilizar el último archivo definido.
- use (\u): usa otra base de datos. El argumento es la base de datos.
Nota: Con mysql no podemos verificar si un servidor está activo, para esa tarea debemos utilizar mysqladmin. |
Ejemplos de uso de mysql
Creación de una base de datos
Si quisiéramos crear la base de datos Terradb desde mysql podemos hacerlo de esta manera, después de iniciar el cliente mysql:
mysql> CREATE DATABASE TerraDB;
Creación de una tabla a partir de un archivo de sentencias (lote batch)
Supongamos ahora que en el archivo terradb.sql tenemos la sentencia CREATE TABLE para crear una tabla dentro de la base de datos TerraDB:
shell> mysql TerraDB < terradb.sql
o, si ya iniciamos mysql:
mysql> USE TerraDB; mysql> SOURCE terradb.sql;
Estado del servidor y conexión en uso
Para conocer el estado vigente del servidor, el juego de caracteres del servidor y del cliente, el delimitador actual, el puerto de conexión y el protocolo podemos utilizar el comando \status o \s:
Otros ejemplos de los distintos comandos del cliente mysql
// comandos del cliente mysql // conectar con una base de datos de un servidor local connect mysql localhost // reconectar (atención cambia el id. de la conexión) // fijar un delimitador no estándar delimiter >> select * from user>> // envía el comando al servidor y muestra los resultados // en vertical select * from user \G // imprime el comando al servidor y lo envía para su ejecución // select * from user \p // para cambiar la base de datos de la conexión // Si la bd se denomina comercio \u comercio // Para ejecutar un archivo de sentencias SQL // por ejemplo, denominado lotesql --------------------------------------------- // contenido del archivo lotesql.sql CREATE DATABASE Terra2; --------------------------------------------- // ejecución del comando \. lotesql.sql // para cambiar el indicador prompt de mysql // P.ej: para que se denomine clientemysql \R clientemysql> // Para generar un archivo de log con el resultado de // las consultas ( y también con lo introducido por // el cliente) el archivo se denominará en este ejemplo // archilog.txt \T archilog.txt // el resultado de esta consulta sale por consola // pero además se graba en el archivo archilog.txt select * from user \T