[ubuntu-ar] mysql y Joomla

Fernando Niwes fniwes at gmail.com
Thu Jan 3 09:56:51 GMT 2008


Borré algunos comentarios no relevantes, y en forma inline voy haciendo
mis comentarios.
> Mirá, hice el comando 1º.- y me dice esto:
> juan at juan-linux:~$ mysqladmin -u root create Joomla
> mysqladmin: connect to server at 'localhost' failed
> error: 'Access denied for user 'root'@'localhost' (using password: NO)'
>   
Este error significa que tu instalación de mysql TIENE una contraseña (y
no es en blanco). Si no tuviera contraseña ya hubiera entrado.
Supongo que estas usando un Ubuntu Gutsy, esta versión de Ubuntu, es la
primera, que yo recuerdo, que al instalar el mysql obliga a ingresar una
contraseña. Tal vez no lo recuerdes.
> Veo el segundo comando:
> juan at juan-linux:~$ mysqladmin -u root create Joomla
> mysqladmin: connect to server at 'localhost' failed
> error: 'Access denied for user 'root'@'localhost' (using password: NO)'
>
>   
Luego intentaste el segundo comando que yo te pasé, pero aquí te
confundiste y ejecutaste nuevamente el primer comando! Fíjate que son
exactamente iguales y el error que retorna es, lógicamente, el mismo.

El que yo te había pasado tiene un -p que vos no pusiste. Para evitar
estos errores te aconsejo hacer copy n paste en lugar de escribir los
comandos siempre que sea posible.

Si lo hubieras ingresado bien, luego de presionar ENTER, te hubiera
preguntado por un usuario y contraseña. Ahí podrías haber intentado
adivinar que contraseña podría tener y si no tenías idea, pasábamos al
siguiente paso que es intentar resetear la contraseña por una conocida.
> 3º.- Voy continuando y me dice así:
> juan at juan-linux:~$ sudo mysqld_safe --skip-grant-tables --skip-networking
> Starting mysqld daemon with databases from /var/lib/mysql
> mysqld_safe[32519]: started
>
> Pero ahí se queda la terminal como esperando... y sin nada donde poderle dar órdenes...
> y si pongo tal cual: $ sudo mysqld_safe --skip-grant-tables --skip-networking &
> se me cierra la terminal (consola)
>   
Ya que estamos en esto para aprender, te comento que es lo que está
sucediendo en los dos casos.

Primero quiero explicarte cual es el significado del signo ampersand.
Este signo, cuando se agrega al final de un comando significa que el
comando se debe ejecutar en segundo plano. O sea, el programa se
ejecuta, pero en lugar de dejarte trabada la terminal te permite
ingresar más comandos.

Si no agregas el & al final, la consola espera a que termine el comando
antes de permitirte ingresar otro. Por esto es que cuando lo hacías sin
el ampersand quedaba todo trabado. (Existe la combinación de teclas
Ctrl-z para pasar pausar un comando en ejecución y despues con un
comando podes decirle que continue en segundo plano, pero eso ya es otro
tema que no voy a entrar en detalle ahora.)

En el caso que una terminal se quede esperando que termine un comando,
puedes dejar esa terminal ahí y abrir una nueva terminal y hacer los
siguientes comandos en esa nueva terminal. Siempre sin cerrar la que
quedó trabada, que realmente no esta trabada, sino que esta ejecutando
un programa, en nuestro caso el mysql

Lo que no entiendo es porqué se te cierra la terminal cuando agregas el
&, no debería cerrarse. Pero en todo caso como aparentemente el programa
quedó ejecutandose en background, y se desatachado de la terminal,
cuando esta se cerró el programa continuó ejecutándose y eso te permitió
hacer los siguientes pasos.

Siempre imagino que para abrir una terminal vas a "Aplicaciones -
Accesorios - Terminal." o alguna otra forma equivalente.
Si ejecutas los comandos con Alt-F2 es normal que se cierre la terminal,
por lo que ese método de ejecutar líneas de comando no es el sugerido
cuando debes ejecutar todo un procedimiento.
> Pero sigamos.. si?
> puse el comando que sigue en tu GENEROSO instructivo y me aparece esto:
> juan at juan-linux:~$ mysql -u root mysql
> Reading table information for completion of table and column names
> You can turn off this feature to get a quicker startup with -A
>
> Welcome to the MySQL monitor.  Commands end with ; or \g.
> Your MySQL connection id is 1
> Server version: 5.0.45-Debian_1ubuntu3.1-log Debian etch distribution
>
> Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
>
> mysql>
>
> Lo que me parece genial ya que nuenca antes lo había logrado.... Geniooooooooooooooooooooooooooo!
>
>   
Felicitaciones, eso significa que estas adentro del intérprete de mysql
y es hora de comenzar a tirar sentencias SQL :)
> Vamos con el siguiente comando.
>
> corresponds to your MySQL server version for the right syntax to use near 'update user set password=password('pepe') where 
> user='root'' at line 2
> mysql>
>   
Bueno, lo que ves aquí es que el comando SQL que ejecutaste no le gustó
al mysql. No se cual es tu pericia con SQL, pero a modo de comentario
este comando que se conoce con el creativo nombre de UPDATE, lo que hace
es actualizar la información en la base de datos.

No voy a explicar SQL en este mail porque no es el objetivo, pero
básicamente el comando le dice a MySQL que actualice la contraseña del
usuario root (aunque supongo que ya te lo imaginabas)

Pareciera que lo que escribiste está correcto, o sea, no debería haber
dado un error, pero noto que dice que el error es en la Linea 2.

Esto me induce a pensar que, sin querer, antes de escribir el comando
este u en algun otro intento, ya habías escrito algo que no anduvo muy bien.

Me inclino a pensar que primero escribiste el comando sin punto y coma,
precionaster enter y viste que no pasó nada y al darte cuenta que
faltaba el punto y coma, ingresaste nuevamente el comando esta vez con
punto y coma.

Ese procedimiento, erroneo genera exactamente el mismo error que aquí
transcribiste. Aunque no es el único me parece el más probable.

Lo que sucede es que MySQL es medio tonto, y la única forma que tiene de
darse cuenta que terminaste de ingresar un comando es con un punto y
coma. Hasta que no ingreses un punto y coma mysql piensa que sigue el
comando, y obviamente repetir dos veces un comando no suele ser válido y
genera un error.

Me dirás, ¿por qué en lugar de un punto y coma no usan el enter? La
respuesta es simple, muchas veces los comandos sql son tan largos que es
más cómodo ingresarlos por partes, presionando enter.

Por eso te recomiendo que sigas nuevamente el procedimiento tal cual lo
hiciste la primera vez, y tengas especial cuidado en este paso. Si
ingresaste algo mal y queres borrarlo, en lugar de presionar Enter para
intentar nuevamente, ingresa un punto y coma y despues enter.

Casi seguro que tirará un error,  pero después podrás ingresar el
comando bien sin problemas. (si alguien experimentado me ve dándote ese
consejo me torturará por toda la eternidad, pero es lo más fácil que se
me ocurre.)

Cuando el comando se haya ejecutado correctamente deberías responder
algo similar a:
Query OK, 0 rows affected (0.00 sec)
Rows matched: 3  Changed: 0  Warnings: 0

> En fin, la tengo difícil, pero sigamos con el maravilloso ejemplo. (Lo digo de corazón).
> mysql> sudo /etc/init.d/mysql restart
> ->
>   
Bueno, aquí te comiste un paso, el que dice quit !

Fijate que el promto aún dice: mysql> !
Eso significa que estas adentro de mysql. Adentro de mysql no existe el
sudo ni ningun comando de la consola, solo comandos sql

Igual esto es excelente para aprender, si uno es detallista.
Fijate que el prompt decía mysql> vos ingresaste sudo /etc/init.d/mysql
restart y precionaste enter.
Y ahí el prompt cambió, ahora es únicamente una flecha ->

Esto tambien es un prompt de mysql, y significa que esta esperando la
continuación del comando anterior. Eso se debe a que como el comando
anterior no terminó con un punto y coma, mysql piensa que aún continua.

Obviamente, si hubiera terminado con punto y coma no hubiera funcionado
porque sudo no es un comando válido dentro de mysql, pero es importante
que puedas diferenciar cuando estas dentro del prompt del mysql, y en
consecuencia solo se espran comando sql y el prompt de la terminal
(realmente del shell) que se suele simbolizar con un $.

Entonces, resumiendo, antes del sudo /etc/init.d/mysql restart, debías
haber escrito quit y enter (quit es, para complicarlo, uno de esos
comandos especiales de mysql qu eno necesitan un punto y coma al final,
pero si lo ponés tampoco estaría mal)

> Esto algo me da alegría ya que estoy en MySQL pero no me deja crear Dbase ni tabla....
>
> Aunque insisto y cumplo la última: mysqladmin -u root -p create Joomla
>
> a ver?
>
> -> mysqladmin -u root -p create Joomla
>     ->
>
>   
Fijate, nuevamente, que por la forma del prompt, aún estas dentro de
mysql. Nuevamente, mysqladmin es un comando del shell no de mysql.
> Así queda....
> Ya se que estoy cerca... pero algo no funciona.
>
> Fernando, Gracias. Creo haberte mostrado lo que hice y lo que me salió como resultado.
>
>   
> Te comento que el mejor resultado lo estoy logrando en modo remoto con 
> mi sitio. Pero quisiera realmente explotar la posibilidad de mi 
> localhost. Y me da mucha bronca que en win lo lograba....
Entiendo lo del mejor resultado es en modo remoto, pero no te desanimes,
esto es simplemente un escoyo. En el sitio remoto estas teniendo mejor
suerte simplemente porque sabes cual es la contraseña. Cuando puedas
tener tu contraseña de mysql ya podras explotar tu localhost, o al menos
comenzar a explorarlo para aprender... te aseguro que a la larga da sus
frutos. Yo trabajo desarrollando algo parecido a paginas webs y sin
tener una base de datos andando en mi localhost sería una verdadera tortura.

En todo caso, te puedo garantizar que si desconocieras la contraseña en
Windows, también tendrías exactamente los mismos problemas (solo que en
windows con desinstalar y reinstalar mysql se arregla, en ubuntu, no lo
se, pero tampoco te lo recomiendo, lo que se aprende arreglando esta
clase de problemas siempre es valioso y útil.
>
> De todos modos veo que sabés un toko de de esto y quiero aprender, por 
> eso agradezco mucho... muchísimo lo que me aportas.
No te creas que se mucho, solamente puede ser que tanga un poquito más
de experiencia. De hecho para poder ayudarte consulté la fuente de todo
el saber sin la cual no sabría nada. (o sea google)

Dudas y/o comentarios son bienvenidos.

> Abrazo y buen 2008
>
> Jp 
Gracias igualmente,
Feliz 2008




More information about the Ubuntu-ar mailing list