Cargar datos en mySQL con LOAD DATA INFILE
Mucha gente me ha preguntado esto y bueno, decidà hacer un post para quienes buscan esta instrucción, para que aprendan a usarla.
LOAD DATA sirve para tomar cualquier archivo “comma-separated” (separado por comas, aunque no necesariamente son comas) y cargarlo como datos en alguna tabla de mySQL; la sintaxis básica es:
LOAD DATA LOCAL INFILE '/importfile.csv' INTO TABLE test_table FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (field1, filed2, field3);
Adicionalmente tiene algunas opciones; pero expliquemos con detalle el comando:
LOAD DATA indica que debe cargar un archivo csv (cualquier hoja de cálculo puede generar este tipo de archivos); si pasamos la opción LOCAL indicamos que el archivo esta en nuestra máquina y que debe ser leÃdo por el cliente y enviado al servidor; sino, la ruta (absoluta o relativa) es en el servidor.
Si dentro de la tabla hay registros, la violación de primary keys podrÃa causar la detención de la carga, entonces escribimos las opciones IGNORE (ignora las filas que violen el constraint y no las inserta) o REPLACE (agrega las filas reemplazando las existentes).
Fijense que quedaria algo como:
LOAD DATA LOCAL INFILE ‘ruta_archivo’
REPLACE INTO TABLE ‘nombre de la tabla’
Si acaso el archivo está en una máquina windows guardado en ISO-8859-1, entonces pueden pasar opcionalmente el charset en el que está el archivo en la sentencia:
CHARACTER SET latin1
Las opciones de como está estructurado el campo:
La dirección que está en mi hoja de calculo tiene comillas simples y comas en los datos, como separo entonces?.
Puedes inventarte cualquier separador entre campos: campo1 : campo2 : campo3 : … campoN : (separados con 2 puntos), simplemente debes indicarle a mySQL cual es el separador de campos con:
FIELDS TERMINATED BY ‘;’ <- yo por lo general uso punto y coma en vez de coma, a veces, uso el PIPE -> |
Tambien pueden indicar con QUE están encerradas las cadenas, si comillas simples, dobles, numerales (#), acentos viriguardilla (~) y cualquier cosa que se les ocurra: “campo1″; “campo2″; “campo3″; …
FIELDS ENCLOSED BY ‘”‘ <- fijense que dentro de las comillas simples, estan unas dobles.
Pueden agregar OPTIONALLY para indicar que algunos campos estan encerrados con comillas, pero no todos:
FIELDS OPTIONALLY ENCLOSED BY ‘#’
Inicio y fin de linea:
Como se inicia la linea?, cadena vacia?, vienen con una columna serial que queremos ignorar?, algun caracter?, simplemente escribimos:
Interpret occurrences of tab, newline, or â??\â?? preceded by â??\â?? as literal characters that are part of field values.
LINES STARTING BY ” <- indica que las lineas empiezan en una cadena vacia
LINES TERMINATED BY ‘\n’ indica que la lina termina con un salto de linea (\n).
Si en su archivo csv hay una o mas filas que repreentan los encabezados de los campos y desean “obviarlas” entonces:
IGNORE 1 LINES hará que se ignore una linea.
Procesamiento de los campos:
En algún sitio debo indicar que representan las columnas de mi archivo coma-separado; las columnas de dicho archivo son leidas secuencialmente, asi que la primera columna del archivo, por defecto, se guardará en la primera columna de mi tabla, si queremos sobre-escribir este comportamiento ejecutamos:
(campo1, campo2, campo3, campo4, campo5 …
para indicar su orden de guardado en la tabla; ejemplo, tenemos una tabla:
nombre, apellido, cedula, fecha_nacimiento
pero en el csv los campos vienen cedula, nombre, apellido, fecha_nacimiento, entonces colocamos entre parentesis los campos asi:
(cedula, nombre, apellido, fecha_nacimiento)
Primera columna de mi csv corresponde al campo cedula, segunda al nombre y asi suscesivamente.
Formateo y condicional de datos:
Si acaso la fecha de nacimiento la guardan el el común formato de las hojas de excel (23/10/78), podemos entonces “guardar” en una variable temporal el valor del campo fecha de nacimiento y procesarla despues, ejemplo:
(cedula, nombre, apellido, @fecha) <- crea una variable temporal de fecha
SET fecha_nacimiento = str_to_date(@fecha, ‘%d/%m/%y’) <- toma la variable @fecha (que tiene la forma dia/mes/año de 2 digitos) y la convierte a ANSI (año de cuatro digitos-mes-dia).
un caso común ocurre con que la gente en JOSS PRO (notese el acento en la X) que escribia todo como si estuvieran trabajando en 8 bits y los nombres vienen con JESUS LARA, PERICO DE LOS PALOTES, cuando deberÃan ser naturalmente capitalizados; eso se acomoda:
(cedula, @nombre, @apellido, @fecha)
SET nombre = Â CONCAT(UCASE(LEFT(@nombre, 1)), SUBSTRING(LCASE(@nombre), 2))
Asi que queda como chuleta si quieren convertir sus viejas aplicaciones FOJJ PRO a nuevas RBDMS como mySQL.
Como final, la sintaxis completa queda:
LOAD DATA LOCAL INFILE ‘archivo’
IGNORE
FIELDS TERMINATED BY ‘;’ ENCLOSED BY ‘”‘
LINES STARTING BY ” TERMINATES BY ”
IGNORE 1 LINES
(field1, field2, field3, @field4)
SET field4 = (alguna cosa SQL que quieran hacerle a @field4)

August 14th, 2007 at 6:15 pm
Quisiera saver si se puede guardar en un archivo txt, desde la creacion de la base de datos como de las tablas hasta la insercion de los datos, y poder ejecutar desde la consola de mysql, utlizando las lineas de comando LOAD DATA LOCAL INFILE…
Tambien quisiera saver si ya no existen mas versiones del mysqlAdmin y el pork?¿?¿
muchas gracias.
August 14th, 2007 at 6:18 pm
hola intente por todas las formas el de crear toda una base de datos y sus tablas mas la informacion que cada tabla deve tener y no pude agradeceria m,ucho si alguien podria ayudarme…
mi nick es PSL FoX muchas gracias
August 16th, 2007 at 9:54 pm
Tu lo que deseas hacer es un “dump” de la base de datos; es crear un archivo (extension .sql, al final es un archivo de texto) con todas las directivas de creacion de la base de datos, sus tablas, indices y la data exportada en la forma de INSERT INTO respectivos; efectivamente eso se puede hacer con:
1.- el comando mysqldump
2.- usando mysql administrator (una aplicacion grafica, por si no te mola un comando en consola como mysqldump).
3.- phpmyadmin (una aplicacion via web).
Claro que existe, debes instalar:
fedora:red-hat:
yum install mysql-admin mysql-admin-common
debian:
aptitude install mysql-admin
gentoo:
emerge mysql-administrator
August 16th, 2007 at 10:02 pm
Aja, y en que sentido no te sirvio???
September 25th, 2007 at 11:17 am
Hola!, muy bueno el tema, pero tengo una pregunta:
tengo una tabla en mysql asi:
Identificacion Nombre Apellido Telefono . . . . . . . .
Y tengo un archivo txt con los campos separados por tabuladores y las lineas terminadas en salto de linea ‘\n’ asi:
Codigo1 Identificacion Nombre Apellido Telefono . . . . . . . . . . .
necesito cargar los datos de este archivo a mi tabla, pero como ves, hay un campo de más en el archivo (Codigo1).
Finamente mi pregunta es:
¿Puedo cargar el archivo a mi tabla en mysql ignorando la primera o cualquier otra columna?
Muchas Gracias.
September 25th, 2007 at 12:03 pm
Si deseas obviar la primera columna, simplemente recuerda que puedes usar SET al final para asignar columnas (en el orden como vienen en el archivo) si usando SET obvias a Codigo1 evidentemente no se tomarà en cuenta; esta es la situación:
(@codigo1, nombre, apellido, telefono, cedula, @fecha_inicio … … …)
Donde cada uno representa el orden de las columnas del archivo y los nombres representan a QUE CAMPO de la tabla se va esa columna en particular; fijate que a codigo1 lo asigné a una variable (@codigo1), si no hago nada con esa columna entonces simplemente se pierde y queda obviada.
adicionalmente fijate que si tu archivo de texto tiene fechas 23/10/78 entonces puedes asignar la columna fechas a @fecha_inicio y luego usando SET ejecutas:
set fecha_inicio = str_to_date(@fecha_inicio, ‘%d/%m/%y’)
Espero te sirva la recomendación …
September 25th, 2007 at 2:25 pm
Te quedo profundamente agradecido por tu respuesta.
Tu sitio me ha sido muy útil…
October 1st, 2007 at 1:57 am
Buen dia. Priemro una felicitacion por dedicar este tema, y quisiera preguantar si se puede hacer lo contrario,es decir guardar na de mysql en un archivo plano (txt). De natemano agradeceria sus comentarios
October 2nd, 2007 at 10:24 pm
Es posible claro, revisa la sintaxis de SELECT INTO
October 11th, 2007 at 3:46 am
podrian decirme como hacer que el archivo .txt con los datos nombre edad sexo direccion separados por el tabulador lo mande a una tabla de mysql las lineas que debo ocupar y como indicar la ruta del archivo o donde debe estar
October 11th, 2007 at 9:09 pm
si el archivo tiene esas columnas en ese orden, separado por tabuladores; usas el comando LOAD DATA LOCAL INFILE ‘ruta del txt, completa!’ … cuando digo completa es que debe incluir las rutas absolutas para llegar al archivo (y evidente el usuario que hace la carga debe tener privilegios para leer el archivo).
Si el archivo tiene encabezados usas IGNORE 1 LINES.
y usas FIELDS TERMINATED BY ‘caracter de separacion entre campos’; las tabulaciones tienen una forma de escapado (creo que es \d) sin embargo no recuerdo (y estoy contestando esto offline en una carretera).
Si tienes algun problema construyendo la sentencia LOAD DATA me avisas …
October 18th, 2007 at 10:10 am
Un saludo cordial, agradesco desde ya la ayudada que me puedan ofreser, mi caso es similar al anterior tengo un txt con datos separados por tabuladores, podrias poner un ejemplo de como colocar los datos me refiero a la estructura y si hay algun cambo vacio que debo colocar para q guarde como tal. estoy usando esto pero no resulta:
A0611 INAP \N \N \N \N \N \N
A0612 N. \N \N \N Abbagnano \N \N
A0613 José B. \N \N \N Adolph \N \N
A0614 Luis Felipe \N \N \N Alarco \N \N
le doy \N a los campos vacios
November 30th, 2007 at 2:00 pm
Este aporte me sirvió de mucho!. … Gracias!
December 12th, 2007 at 3:12 pm
La pregunta es la siguiente tengo una tabla con un campo autoincrementable y un archivo txt separados por el simbolo mayor que (>) que me contiene el resto de los campos que necesito para la tabla, lo he tratado de hacer poniendole al final los campos que representan en la base de datos pero me da un error “You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘/COO,MontoTotal)’ at line 1″ me gustaria si se puede me ayudaras con la construcción de la sentencia sql. Ah y estoy trabajando en php.
December 16th, 2007 at 10:45 pm
puedes colocar una linea de ese archivo de texto para ver como queda?, evidentente tienes un error de sintaxis por como está tomando los datos …
tambien que sentencia LOAD DATA usaste …
February 28th, 2008 at 3:34 pm
deseo cargar una tabla mysql desde un archivo de texto, en el hay columnas de tipo de dato datetime, el problema es que en el archivo de texto algunos registros en esa columna estan vacios, a la hora de ejecutar la sentencia aparece lo siguiente:
Incorrect datetime value: “” for column “nombre del campo datetime”
Alguien me podrÃa ayudar por favor!
February 29th, 2008 at 8:56 pm
Quiero saber si es posible solamente cargar el archivo cumpliendo una condicion especifica, por ejemplo en una tabla donde tengo:
tienda,articulo
Necesito subir solo los articulos donde la tienda sea la numero 92 ya que en mi archivo tengo los registros de 2 tiendas(41 y 92)…se podrá utilizando la rapidez y velocidad del LOAD DATA INFILE?
February 29th, 2008 at 8:58 pm
Quiero saber si es posible solamente cargar el archivo cumpliendo una condicion especifica uno de los campos del archivo, por ejemplo en una tabla donde tengo:
tienda,articulo
Necesito subir solo los articulos donde la tienda sea la numero 92 ya que en mi archivo tengo los registros de 2 tiendas(41 y 92)…se podrá utilizando la rapidez y velocidad del LOAD DATA INFILE?
March 2nd, 2008 at 1:19 pm
José Espinosa; te aconsejo que pruebes con IF (deberia funcionar, aunque no lo he probado); la cosa irÃa más o menos de la siguiente manera:
campo, campo, campo, @fecha <- el que tu quieres, pasalo a una variable
Como tienes valores vacios, el campo DEBERIA aceptar valores zero, sino, al menos ponle un valor “by default” como un CURRENT_TIMESTAMP.
En tu caso; lo harás de la siguiente manera:
SET fecha_datetime = IF(@fecha=”,CURRENT_TIMESTAMP,str_to_date(@fecha, ‘%d/%m/%y’))
Esa estructura es técnicamente válida; puedes en vez de pasar un current_timestamp; pasar un ‘0000-00-00 00:00′ si el campo acepta zerofill.
March 2nd, 2008 at 1:25 pm
Jonás, no he testeado logica IF en un LOAD DATA INFILE; posiblemente (por el backend de la DB y por tener indices y otras cosas); sea más eficiente el siguiente movimiento de:
1.- creas una tabla temporal en memoria, tipo MEMORY (HEAP) (ej. temp_articulos)
2.- agregas indices para el campo tienda a la tabla en memoria (temporal) eso mejorará la consulta que realizaremos en paso 4.
NOTA: si quieres la dejas creada al arranque de tu app y no tienes que hacer el paso DROP (pero si el TRUNCATE)
3.- haces el LOAD DATA INFILE de TODOS los registros
4.- ejecutas la insercion de todas las tiendas 92 en la tabla final:
INSERT INTO articulos (tienda, articulo)
SELECT * FROM temp_articulos WHERE tienda = 92 (<- Subconsulta de insercion)
5.- despues de transferidos los datos a la tabla; vacias la tabla con: TRUNCATE temp_articulos o en su defecto la borras: DROP TABLE temp_articulos.
April 7th, 2008 at 5:33 pm
Quiero hacer la carga de una tabla pero esta tiene columnas que son enteros, pero con LOAD DATA INFILE me da un error he pensado que no es posible cargar un entero, pero por la experiencia tuya creo es posible. Espero que me ayudes, gracias espero que me puedas ayudar.
April 7th, 2008 at 5:36 pm
Quiero hacer la carga de un archivo txt donde exiten campos que deben ser enteros en la tabla a la que se le va a pasar, los campos estan separados por ‘>’ pero con LOAD DATA INFILE me da un error he pensado que no es posible cargar un entero, pero por la experiencia tuya creo es posible. Espero que me ayudes, gracias espero que me puedas ayudar.
April 7th, 2008 at 8:53 pm
Douglas, ¿qué error te da?; la cosa debe estar sucediendo con el tipo de separador de cadenas que debes estar usando; no existe motivo para que un entero no sea cargado; pon una fila de ejemplo como comentario y la sentencia LOAD DATA que estas usando …
Todos los campos están separados por ‘<’? … Si consideras que está bien la lógica de tu LOAD DATA entonces juega a colocar en una variable @columna a cada columna que es entera; posteriomente ejecuta:
SET columna_entero = CAST(@columna as UNSIGNED) (o SIGNED si es entero con signo negativo)
Eso deberÃa hacer la conversión a entero, si encuentra un valor null o vacio, lo convierte a cero, si acaso son decimales, entonces usas CAST(@columna as DECIMAL).
Prueba a ver y me avisas con exactitud el error que te da …
April 8th, 2008 at 4:10 pm
Gracias por la pronta respuesta, ya fue solucionado el problema pero de veras que estoy agradecido de que se preocupen de responder las inquetiudes de algunos de nosotros que podamos tener una duda por muy pequeña que esta sea.
El problema que se presentaba era por un valor que queria meter en la base de datos MySQL ya que tenia un campo que era float y estaba tratando de mandar el valor con coma por ejemplo (15,56) y no lo podia recibir de esa manera sino de esta forma (15.56) y no tuve que agregar nada mas y funciono de muy buena manera.
Esta fue la instrucción que utilice:
LOAD DATA INFILE ‘PruebaDG.txt’ INTO TABLE prueba FIELDS TERMINATED BY ‘>’ OPTIONALLY ENCLOSED BY ” LINES TERMINATED BY ‘\r\n’;
Este es el archivo con el cual realice la prueba:
123456>154289.25>Douglas>Gene
789456>1200.05>Daniel>Perez
456789>1150.30>Jose>Ruiz
Y todo funciono de maravillas, Muchas Gracias por la ayuda phenobarbital.
May 8th, 2008 at 3:41 am
Quiero hacer la carga de un archivo txt donde los campos no estan separados (pero si conozco la longitud de cada campo en el string) he usado LOAD DATA INFILE y me da error creo que lo interpreta como un solo campo. segunda pregunta el LOAD DATA crea la tabla o hay que crearla y depues llenarla, Espero no les moleste mi ignorancia estoy empezando, gracias espero que me puedas ayudar.
June 12th, 2008 at 9:28 pm
Hola a todos tengo la siguiente inquietud ..
He creado una base de datos la cual cargo cada hora con un archivo de texto mediante el comando:
LOAD DATA LOCAL INFILE “TAS02000_status.txt” IGNORE INTO TABLE TblStatus FIELDS TERMINATED BY ‘ ‘;
El Archivo TAS02000_status.txt contiene las siguientes columnas:
733560.1250000000 2008-06-01 03:29:50 2008-06-01 03:00:00 TAB01441 1.9994 -78.8403
733560.2083333334 2008-06-01 05:29:07 2008-06-01 05:00:00 TAB01441 1.9994 -78.8408
……
he creado un script para que se cargue cada hora esta tabla, la cual agrega datos cada hora.
Lo que esta pasando es que cada vez que la cargo se repiten los valores de las filas debajo de las que ya estaban almacenadas en la base de datos, por lo cual pienso que el comando IGNORE no esta funcionando como debe, ya que no IGNORA las que ya estan , si no que las repite creando nuevas filas.
Cual seria la solucion para solo añada los nuevos datos de la tabla?
Gracias
June 14th, 2008 at 3:52 pm
Pregunta básica EfraÃn; quien es el PK (Primary Key) de la tabla TblStatus?, IGNORE asume que existe un principio de unicidad de los campos y por tanto,si la unicidad se cumple, el campo no se inserta; pero si por ejemplo el primer campo es el id y este es auto-increment nunca tendrás un criterio UNIQUE que pueda ejecutar el criterio IGNORE, revisa bien.
Si deseas, postea aquà en DESCRIBE de la tabla para que veamos, ejecuta:
DESCRIBE TblStatus;
y lo colocas aquÃ
Espero tu respuesta.
July 4th, 2008 at 4:57 pm
perdona la demora en contestar …. mi trabajo no me permite mucho tiempo, pero efectivamente me faltaba establecer la PK … asi que ya esta llisto … muchas gracias por tu orientacion
August 1st, 2008 at 1:28 pm
Hola Phenobarbital y felicitaciones por la página…
Pfavor, te agradecerÃa me ayudes con este problema:
Quiero actualizar diariamente solamente el campo SALDO de una tabla que tiene los siguientes campos: CODF, APELLIDOS, NOMBRES, SALDO. En esta estructura el campo indice del tipo UNIQUE es: CODF
Mi archivo txt ha sido generado con lÃneas de este tipo: “400″,”PEREZ”,”JUAN CARLOS”,”1000″
Utilizo las siguientes lÃneas en mi código PHP:
$var = “LOAD DATA LOCAL INFILE ‘C:/TEMP/usuarios.txt’ REPLACE INTO TABLE `usuarios` FIELDS TERMINATED BY ‘,’ ENCLOSED BY ‘\”\’ ESCAPED BY ‘\\’ LINES TERMINATED BY ‘\r\n’(`codf` ,@dummy , @dummy , `saldo`)”;
mysql_query($var,$link) or die(”Error $var MySQL dice: “.mysql_error());
El problema es que el sistema me da el siguiente error:
Error LOAD DATA LOCAL INFILE ‘C:/TEMP/usuarios.txt’ REPLACE INTO TABLE `usuarios` FIELDS TERMINATED BY ‘,’ ENCLOSED BY ‘”\’ ESCAPED BY ‘\’ LINES TERMINATED BY ‘ ‘(`codf` ,@dummy , @dummy , `saldo`)
MySQL dice: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘\’ LINES TERMINATED BY ‘ ‘(`codf` ,@dummy , @dummy , `saldo`)’ at line 1
Utilizo las variables @dummy para obviar los campos que no necesito actualizar, pero no funciona y no entiendo a que se debe. He hecho varios intentos pero nada.
Te estaré muy agradecido por la ayuda!!!
August 22nd, 2008 at 11:21 am
tengo esta sintaxis para pasar csv a mysql,LOAD DATA INFILE ‘C:\\Users\\Abrahan\\Desktop\\RE-CSV-02.csv’ INTO TABLE table1 FIELDS TERMINATED BY ‘;’
tengo una tabla con 5 campos y quisiera agregarle un campo mas con un valor fijo un codigo con exactitud.
por ejemplo cedula, nombre, apellido,diercción,telefono, pero quisiera amedida que se cargue en mi base de datos se agregue un datos extra en otro campo (codigo 00012)
September 8th, 2008 at 5:34 pm
Hola:
Una consulta, ya que no he encontrado respuesta en google..
YO quiero hacer algo asi:
SET @fecha = ‘20080905′;
LOAD DATA INFILE ‘/opt/lampp/htdocs/mis_test/data/ida_@fecha.txt’
INTO TABLE ida3
FIELDS TERMINATED BY ‘,’ ENCLOSED BY ‘”‘ LINES TERMINATED BY ‘\r\n’;
Iniciar una variable y esa variable que este dentro del INFILE (@fecha).
Sé que no se peude usar LOAD DATA en un procedimiento almacenado, entonces quisiera usarlo aparte, pero ahora me he topado con esto y no sé como lidiarno.
Gracias de antemano.
September 26th, 2008 at 8:56 am
Para aquellas personas que tienen archivos tabulados ponganles en TERMINATED BY ‘\t’
November 11th, 2008 at 2:34 pm
Muy buenos ejemplos. Gracias.
November 11th, 2008 at 8:47 pm
Muchas Gracias..
November 13th, 2008 at 5:32 pm
Buenas tardes yo tengo una pregunta,
En este momento solo estoy cargando un .csv
load data
infile ‘/home/mas/muchos/masivos/ejemplo.csv’
into table men_ldap
fields terminated by “;”
( NOMBRE1, NOMBRE2, APELLIDO1, APELLIDO2, TIPO_DOCUMENTO, NRO_DOCUMENTO)
Como hago para cargar mas de 2 csv de forma masiva,
muachas gracias,
November 13th, 2008 at 5:42 pm
Buenas tardes,
Se me olvido aclarar que todos quedan en la misma tabla men_ldap, y los datos quedan consecutivos.
Gracias,
November 25th, 2008 at 11:01 pm
buenas noches amigo,
tengo una consulta espero m puedas ayudar. Mi situacion es que tengo un hosting y uso este codigo para intentar subir mis archivos .txt:
$var = “LOAD DATA INFILE ‘$sql_file’ INTO TABLE tabdtt FIELDS TERMINATED BY ‘;’ ENCLOSED BY ‘_’ LINES TERMINATED BY ‘\r\n’ “;
el error que me aparece es el siguiente:
Error LOAD DATA INFILE ‘C:\TabDtt.TXT’ INTO TABLE tabdtt FIELDS TERMINATED BY ‘;’ ENCLOSED BY ‘_’ LINES TERMINATED BY ‘ ‘
MySQL dice: Access denied for user ‘courrier’@'%’ (using password: YES)
Espero m puedas ayudar. Gracias.
November 27th, 2008 at 11:19 am
Tu problema no es la sentencia; es el acceso; el usuario con el que iniciaste la conexión (courrier) no tiene privilegios para acceder desde donde estás; posiblemente estás pasando mal el password; verifica la posibilidad de GRANT del usuario; ejemplo vuelve a ejecutarla con:
GRANT ALL PRIVILEGES ON database.* TO courrier@’%’ IDENTIFIED BY ‘el password’;
Donde database es el nombre de la base de datos a los que el usuario tiene acceso (* para todo) y @ip es la IP desde donde tendrá acceso (localhost para conexiones locales via socket, 127.0.0.1 para conexiones locales via TCP/IP, % como comodin para indicar “todas las IP”).
luego de ello, vuelve a conectarte y ejecuta.