¿Cómo conectarse a MySQL?

Foro para que los usuarios de MAX consulten las dudas que puedan tener.

Moderadores: daniel.esteban, victor.armendariz, ruben.garcia45, irene.olalla, dgonzalezarroyo

Responder
des_hundalasiliah
Mensajes: 179
Registrado: 25 Oct 2005, 13:44
Ubicación: www.lacasonadelucia.com
Contactar:

Hola

Estoy intentando aprender a usar MySQL tirando de documentación, y me encuentro con el siguiente problema: en todos los manuales se da por hecho que MySQL lo hemos instalado y configurado a nuestra medida, y que funciona correctamente.

En Max, como en muchas otras distribuciones Linux, ya viene instalado por defecto, y no encuentro la manera de hacerlo funcionar. Si estando en un terminal como usuario madrid, pruebo con:

mysql ó mysql -h localhost -u madrid

obtengo:

ERROR 1045 (28000): Access denied for user 'madrid'@'localhost' (using password: NO)

Si ejecuto mysql ó mysql -h localhost -u root desde un terminal pero ahora con el usuario root, obtengo:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Y si además intento accer con una contraseña (la del correspondiente usuario del sistema Linux), pasa lo mismo.

Con la herramienta MySQL Administrator, obtengo idénticos resultados.

Ya no es que no sepa crear bases de datos en MySQL, es que ni siquiera puedo acceder al servidor. ¿Alguien sabe qué usuarios y contraseñas usa MySQL en Max 3.0 beta 4?
des_fernando.lison
Mensajes: 204
Registrado: 11 Mar 2005, 13:35

Hola!

He podido conectarme con
mysql -u root -p

la contraseña que pide después es cmadrid.

El paso siguiente es que crees un usuario con los privilegios adecuados para que pueda crear sus bases de datos (Puede tener el nombre de un usuario del sistema u otro cualquiera). La orden -después de haber hecho lo anterior- es algo así:

GRANT ALL PRIVILEGES ON *.* TO usuario@localhost IDENTIFIED BY 'contraseña';

la contraseña no tiene porque coincidir con la del usuario, si es que se llama igual, aunque es lo lógico. La contraseña se escribe entre comillas simples.

De todas formas, deberías estudiar la orden GRANT, con detenimiento.

Para darte ánimos en tu paso a mysql te invito a que visites Animalandia:
http://herramientas.educa.madrid.org/animalandia/
aquí mysql contiene una base de datos con bastantes tablas, incluso algunas se generan automáticamente para los usuarios de uno de los juegos, la tabla más gorda tiene más de 3000 registros con 25 campos cada uno, y la que mantiene las fotografías supera ya los 7000 registros.
Hace muchos años, Animalandia era un programa en VisualBasic contra Access...

Estaré encantado de poder ayudarte.
Un saludo
Fernando Lisón
des_hundalasiliah
Mensajes: 179
Registrado: 25 Oct 2005, 13:44
Ubicación: www.lacasonadelucia.com
Contactar:

Gracias por la respuesta, por fin he podido conectar

Ahora he estado investigando las posibilidades del gestor Knoda, y aunque no he encontrado la manera de relacionar tablas (supongo que en MySQL es posible ¿no?), el tema promete

No sé si llegaré a encontrar un gestor que usando MySQL de fondo me permita hacer lo que hago con Access (funciones y formularios incluidos), es el penúltimo paso para migrar definitivamente a Linux. El último es encontrar el juego de las Damas para jugar online :D

fernando.lison, ten por seguro que mientras te dure la paciencia te consultaré dudas acerca de MySQL. Ahí van dos:

1) ¿dónde se guardan las bases de datos?
2) ¿se crea un archivo por tabla o un archivo por base de datos?
des_fernando.lison
Mensajes: 204
Registrado: 11 Mar 2005, 13:35

Las bases de datos se guardan en /var/lib/mysql/
se genera un directorio para cada base de datos, con al menos tres archivos por cada tabla: tabla.frm tabla.MYD y tabla.MYI

Si lo que estás pensando es cómo llevarte una base de datos de un lado para otro, debes mirar el comando mysqldump, que permite hacer volcados de la base de datos entera. o de una o más tablas, en archivos de texto plano.

En cuanto a las relaciones entre tablas para mantener la integridad referencial, consulta:
http://www.mysql-hispano.org/page.php?id=27&pag=1
En Animalandia, es el software que empleo en el ingreso de datos, el que me asegura la integridad referencial que necesito.

Lo de las demas va a ser lo único que te impida migrar definitivamente a Linux ;-)

Saludos
des_hundalasiliah
Mensajes: 179
Registrado: 25 Oct 2005, 13:44
Ubicación: www.lacasonadelucia.com
Contactar:

He visto la página de Animalandia y estoy impresionado, no sabía que se podía llegar a tanto usando PHP y MySQL.

¿Sabes de algún buen manual que combine ambos conceptos y que empiece "de cero"? Porque los que he visto ya dan por hecho que sabes cómo funcionan los servidores de bases de datos, así que los que hemos aprendido lo que son las bases de datos con Access parece que no existimos para quien hace dichos manuales.

He encontrado el libro "PHP and MySQL for dummies", y parece bastante completo, pero claro, está en inglés. Y no es que no sepa el lenguaje de Shakespeare, es que bastante complicado me parece lo del PHP+MySQL como para encima andar traduciendo.

Por cierto, he encontrado un servidor gratuito con funciones PHP y MySQL, pero me da un error a la hora de importar una base de datos. Para quien controle dichas funciones, puede resultar muy interesante. El servidor es www.orgfree.com
des_hundalasiliah
Mensajes: 179
Registrado: 25 Oct 2005, 13:44
Ubicación: www.lacasonadelucia.com
Contactar:

Fernando, me gustaría (si no es mucha molestia) que me resolvieras unas dudas:

1) ¿Es mejor guardar las imágenes directamente en la base de datos en un campo BLOB o sólo las rutas, en un campo de texto normal y corriente?

2) En el primer caso, ¿cómo se puede recuperar la imagen para insertarla en un determinado punto en la correspondiente página PHP?

Con respecto a la primera pregunta, me gustaría saber tu opinión personal, ya que he leído argumentos a favor y en contra de usar la base de datos para guardar imágenes:

A FAVOR:

* Al no guardarse las imágenes en el sistema de archivos, no hay problemas de compatibilidad entre diferentes sistemas operativos por cuestiones de distinción de mayúsculas/minúsculas o de que uno separe rutas con / y el otro con \

* Es más rápida la carga de imágenes en el navegador del cliente

EN CONTRA:

* La base de datos puede llegar a crecer de tamaño de manera vertiginosa.

* Hacer una copia de seguridad puede llevar un tiempo considerable

* Es complicado recuperar la imagen para insertarla en el código PHP

Lo pregunto porque estoy preparando la página web de un hostal en el que se ven fotos de las habitaciones (en miniatura y en tamaño más grande), y de momento en la BD guardo las rutas para luego insertarlas en el código PHP. De momento, y considerando que soy un novato, funciona exactamente como quiero. Pero el hecho de tener tantas imágenes en disco duro me lía y considero que el mantenimiento de la página sería mucho más sencillo si estuvieran dichas fotos guardadas en la BD. ¿Qué opinas?
des_fernando.lison
Mensajes: 204
Registrado: 11 Mar 2005, 13:35

Me inclino completamnte por no meter las imágenes en la base de datos, Para tu problema, un directorio con las imágenes pequeñas y otro con las grandes, de manera que las imágenes pueden llamarse igual y es PHP el que maneja lo que hay que presentar.
La base de datos te dice el nombre de la foto y tu pones la que quieras:
print "<img src='medias/'" . $nombre_de_la_foto .">";

print "<img src='imagenes/'" . $nombre_de_la_foto .">";

(escrito de carrerilla y sin comprobar)

Saludos
des_hundalasiliah
Mensajes: 179
Registrado: 25 Oct 2005, 13:44
Ubicación: www.lacasonadelucia.com
Contactar:

fernando.lison escribió:Me inclino completamnte por no meter las imágenes en la base de datos
Me gustaría saber tus argumentos en contra: ¿sobrecarga del sistema? ¿dificultad para recuperar las imagenes?
fernando.lison escribió:Para tu problema, un directorio con las imágenes pequeñas y otro con las grandes, de manera que las imágenes pueden llamarse igual y es PHP el que maneja lo que hay que presentar.
La base de datos te dice el nombre de la foto y tu pones la que quieras:
print "<img src='medias/'" . $nombre_de_la_foto .">";

print "<img src='imagenes/'" . $nombre_de_la_foto .">";

(escrito de carrerilla y sin comprobar)
Gran idea. Lo que estaba haciendo era meter en el mismo directorio las imágenes normales (por ejemplo 080709.jpg) y sus miniaturas (080709_s.jpg), y en la base de datos tener un campo para cada una de ellas, "urlnormal" y "urlmini".

Según este ejemplo, las rutas serían "images/080709.jpg" y "images/080709_s.jpg", con lo que es evidente que mi base de datos tiene que guardar más información, y necesita más campos, que si lo hubiera hecho a tu manera.

Muchas gracias por tu ayuda, Fernando :D
Responder