Mostrando las entradas con la etiqueta MySQL. Mostrar todas las entradas
Mostrando las entradas con la etiqueta MySQL. Mostrar todas las entradas

sábado, 21 de febrero de 2009

my.cnf

Otro de mis recordatorios para Mai hese kú héleeeeee!"#!"#Sdadsadasdd

Este texto es un extracto de la documentación de MySQL que da una breve explicación del archivo my.cnf, el cual es el archivo de configuración de MySQL (un homónimo de my.ini en windows o algo así). Básicamente es un archivo de configuración.

Fuen....teh!

15.3. Configuración de InnoDB




¿Dónde deben especificarse las opciones en Unix? En Unix, mysqld lee las opciones en los siguientes ficheros, si existen, en el siguiente orden:

  • /etc/my.cnf Opciones globales.

  • $MYSQL_HOME/my.cnf Opciones específicas del servidor.

  • defaults-extra-file El fichero especificado con la opción --defaults-extra-file.

  • ~/.my.cnf Opciones específicas del usuario.


MYSQL_HOME representa una variable de entorno la cual contiene la ruta al directorio que hospeda al fichero específico de servidor my.cnf.

Si se desea estar seguro de que mysqld lee sus opciones únicamente desde un fichero determinado, se puede emplear --defaults-option como la primera opción en la línea de comandos cuando se inicia el servidor:

mysqld --defaults-file=ruta_a_my_cnf



"Te llevaré a donde quieras ir
a una galaxia lejos de aquí
donde ninguno te encontrará
rumbo a la inmensidad"

Mijares


Ahí lo pruebo mañana que ya tengo que dormir.

jueves, 11 de septiembre de 2008

Nota al pie (instalando MySQL)

El error me dio cuando quise instalar la distribución binaria de MySQL 5.1 en mi máquina Linux específicamente mysql-5.1.26-rc-linux-i686-glibc23 (cambiando a la 5.0 todo vuelve a la normalidad). Hace uno

# mysql_install_db --user=mysql


y obtiene

Installing MySQL system tables...
ERROR: 1062 Duplicate entry 'localhost-' for key 'PRIMARY'
080911 18:32:40 [ERROR] Aborting

080911 18:32:40 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete


Installation of system tables failed! Examine the logs in
./data for more information.


Fui a la carpeta data como me dijo pero los dos logs que contenía estaban vacíos. Busqué en google ese error de distintas formas hasta que la búsqueda "mysql_install_db" "ERROR: 1062" "Duplicate entry" "for key" me llevó a esta página donde se expone una solución.

Resulta que esta versión al ejecutar el archivo de instalación de scripts (el mysql_install_db anteriormente mencionado) llena la tabla de permisos (GRANT table) y crea 2 usuarios iniciales:

'root'@'localhost'
'root'@<nombre-del-servidor>


el problema es para servidores caseros como el mío donde el nombre del host es el mismo localhost (oséase 127.0.0.1), entonces intenta crear dos usuarios iguales y salta este error.

La solución es cambiar el nombre del host para que haga dos distintos. Eso resulta ser algo complicado pero existe (en Linux) un comando llamado hostname que cambia el nombre del host temporalmente (al volver a inicial Linux nuevamente tendríamos localhost como nombre pero ya no importa mientras la base esté instalada). Así pues lo único que hay que hacer es tipear (como root):

# hostname loquesea


Nuevamente se reintenta la ejecución de mysql_install_db y el resultado es este:

WARNING: The host 'NekroLinux' could not be looked up with resolveip.
This probably means that your libc libraries are not 100 % compatible
with this binary MySQL version. The MySQL daemon, mysqld, should work
normally with the exception that host name resolving will not work.
This means that you should use IP addresses instead of hostnames
when specifying MySQL privileges !

Installing MySQL system tables...
OK
Filling help tables...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/usr/local/mysql/bin/mysqladmin -u root password 'new-password'
/usr/local/mysql/bin/mysqladmin -u root -h NekroLinux password 'new-password'


Alternatively you can run:
/usr/local/mysql/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.

See the manual for more instructions.


Esta es solo una ADVERTENCIA, no un mensaje de error; su objetivo es informar al BOFH para que lo tenga presente. Se puede evitar poniendo una dirección válida, yo puse www.google.com.mx y no me mostró la advertencia.

Y aquí la prueba de los dos usuarios que ha creado para acceder a la base de datos.

Para los que crean que lo único que hice fue traducir lo que contiene la otra página déjenme decirles que están muy equivocados... también requiere su esfuerzo mental parafrasear lo que el autor dijo >:-(




[Horas después ¬¬]

Funcionó pero ocasiona otro error:

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


Y aquí una página propone una solución:

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

Lo probé y al hacer SELECT * FROM cualquiertabla; comprobé que tengo la base de datos vacía ¬¬. Esto me hace acordar a eso que dicen que es la definición de un informático: Es alguien que resuelve problemas que nadie sabía que existían, nadie entiende y a nadie le importa ¬¬

Voy poniendo esto por si le sirve a alguien más de ayuda pero lo cierto es que ya me está llevando la santa verga y creo que le voy a dar delete a todo ¬¬




[Como una hora después]

Fue, lo voy a borrar! Me cargó ya! Fuera no me importa si tengo que cambiarle medio código fuente a MySQL pero no vuelvo a esa versión!

Grrr!!!!

lunes, 8 de septiembre de 2008

Recordatorios de MySQL

Listo, no sé qué cosas he cambiado desde "Recordatorios" pero ahora el asunto es así:

Tengo primero que plantarme como root en la shell para que al correr los comandos se puedan crear y modificar archivos que están en directorios en los que no tengo acceso ni de lectura como usuario normal. Una vez logueado como root escribo:

Iniciando el servidor primero
# mysql.server start

Cosa que me debe retornar:
Starting MySQL SUCCESS!

Luego me logueo ("root" por ejemplo"):
mysql --user=root -p

Después de teclear la contraseña me debería mandar su mensaje de bienvenida y darme la shell de MySQL:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.37 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>


Explico algunas cosas: creé enlaces simbólicos en /usr/local/bin a los archivos: mysql, mysql.server y mysqld_safe para evitarme el trabajo de cambiar de directorio lo cuál me da mucha pereza.

Como dije en el post anterior de "Recordatorios": "Cada vez que uso MySQL después de dejarla en el abandono durante un buen tiempo suceden problemas, no sé por qué".

En realidad es obvio que se debe a mi novatez y a mi poca frecuencia con esa base de datos, pero las nubes son muy hermosas.

sábado, 7 de julio de 2007

Recordatorios

Cada vez que uso MySQL después de dejarla en el abandono durante un buen tiempo suceden problemas, no sé por qué.

El punto es que ahora el problema fue que por alguna razón no podía realizar la operación describe [table]; y me marcaba el error:

ERROR 1 (HY000): Can't create/write to file '/root/tmp/#sql_10b7_0.MYI' (Errcode: 13)


ni como root.

Busqué unos segundos por Google y di con la respuesta:

aberselli
had the same problem... now solved... :)
two ways:
1)chmod 777 root (deprecated for security reason)
chmod 777 root/tmp
2)edit your /usr/local/etc/my.cnf
add or edit
[mysqld]
tmpdir = /tmp/

way 2 works belive me :) :mambo: :)


Sólo era cosa de ir a mi my.cnf y agregarle el trozo [mysqld] LF
tmpdir = /tmp/
que se explica y listo.

Me costó algo de trabajo porque como llevaba tiempo sin dialogar en SQL ni me acordaba dónde estaba ese archivo, hasta que después de como 2 minutos me acordé que era en /etc/my.cnf, lo abrí como root y lo edité, downié el servidor (oquei, mexicanizando el verbo 'to down') y lo volví a inicializar. ¡Listo! pude hacer el describe user; de la table mySQL.

Si a alguien le ayuda esto cuanto mejor, porque el blog está indexado en Google y para eso puse todas estas especificaciones: para que se llegue más fácilmente; aunque la realidad es que lo postié cono nota, como recordatorio para cuando se me vuelva a olvidar esto, y es que como ni lo practico casi (no tengo mucha necesidad de bases de datos) pues se me pierde.

Por lo mismo agregaré otras notas.

Iniciar MySQL :#(       (primero ir a /usr/local/mysql/bin)
[nekrobyte@localhost bin]$ ./mysqld_safe --user=[NekroByte||root] -p &

Insertar datos (que también para ingresar un nuevo usuario)
mysql> INSERT INTO [tabla] (campo1, campo2, ...) VALUES (valor1, valor2, ...);

Borrar datos
mysql> DELETE FROM [tabla] WHERE [expresión];

Cambiar contraseñas;
mysql> SET PASSWORD FOR '[usuario]'@'[host]' = Password('TU-FECHA-DE-CUMPLEAÑOS');

Actualizar Privilegios
mysql> FLUSH PRIVILEGES;


Y creo que con esto es suficiente... sino pues le agrego, ¿cuál es el problema?

SaludosJílsenerKambioIPhuera!

jueves, 12 de abril de 2007

LAMP

¡Por fin he logrado montar un servidor web!

Después de dos intentos fallidos en Windows, fue en Linux donde por fin pude ver cumplida mi meta de tener montado un servidor web basado en LAMP (Linux, Apache, MySQL y PHP).

Primero instalé MySQL, después Apache y después PHP. ¿Qué relevancia tiene el orden? Puede ser que tenga alguna, no lo sé, pero cabe comentar que casualmente en ese orden fue lo difícil que se puso la situación: instalar MySQL no requirió de mucho esfuerzo y apenas y tuve problemas para asegurarme de que funcionara.

Me documenté lo más que pude, después instalé la base como 3 veces hasta que vi que funcionaba, después aproveché la madrugada para leer el curso de AulaFacil de MySQL; no fue difícil, pues eran sólo un par de párrafos y un vídeo, obviamente tampoco fue profundo pero de veras que se trató de un tutorial muy ameno: si alguien necesita aprender lenguaje SQL en un día a base de un curso intensivo, este es su tutorial.

Después vino Apache, con algunos errores, más documentación y un quebradero de cabeza para hacerlo correr, la documentación no fue tanta pero sí me tuve que enfrentar a nuevos conceptos, como que ese fue mi primer ./configure; make; make install.

Y PHP, ese sí que fue un neurocidio, me la pasé documentándome un poco más, casi tanto como en MySQL, después me lié para hacer el .configure, pues sentía la necesidad de tomar las decisiones correctas. Estuve desde este momento pero del día anterior haciéndolo.

Realmente instalar PHP fue mucho más difícil que Apache que fue más de pensar que MySQL.

Aunque debo admitirlo: la gran parte de los problemas a los que me enfrenté fue por mi novatez en el asunto, ya que no estoy acostumbrado a compilar programas y el ./configure fue un verdadero reto.

Otros tropezones que di fue mientras instalaba PHP, pues necesitaba tener un tal lex (o flex, era opcional) y lo tuve que instalar, pero para ello debía poseer otro tal yacc que hasta ahora ni pude entender para qué sirve exactamente pero lo conseguí (bueno, en realidad instalé el yacc de Berkeley pero con ese me bastó).

El punto es que su tipeo http://localhost/ ya puedo ver desplegada correctamente la página index.php de un directorio que yo asigné con su respectivo phpinfo() tal cual debe ser.

Lo que me falta hacer es asegurarme que pueda usar correctamente MySQL desde PHP (no instalé nada en /usr/local más que el php.ini), revisar el php.ini, httpd.conf y optimizar la seguridad en MySQL. En pocas palabras: lo que me falta ahora es aprender a usarlos, jajajajaja.

Pensaba ir posteando mis logros conforme se fueran dando pero mejor pensé en terminar con la lámpara (LAMP) y después venir a presumirlo.

Por el momento ya tengo conocimientos básicos de SQL y con PHP presiento que no será tan difícil aprenderlo, creo que ocurrirá lo mismo que con Java: como ya C sé (sé C) no tendré muchos problemas al crear variables, y veo que el comportamiento de PHP es similar al de el bash de Linux: variables con $, permisos con chmod, entre otras ventajas.

Este es verdaderamente un gran paso y aquí fue donde me di cuenta de algo:

Antes, cuando recién comenzaba en este mundo de la informática, me veía imposibilitado para hacer muchas cosas: cuando se me presentaba un problema, no sabía cómo resolverlo, mis conocimientos eran tan pocos que no imaginaba las alternativas que tenía y muchas veces acababa rindiéndome, incluso cuando se trataba de comprender aspectos sencillos de Visual Basic. Pero ahora, lo que hizo que me diera cuenta de cómo han cambiado las cosas, es cuando se me presentaban problemas al montar LAMP (sí, también Linux): me consternaba el que algo saliera mal (otro problema!) pero luego pensé: "tranquilo, así no vas a llegar a ser alguien grande" y buscaba soluciones. Si estuviera en este mismo escenario pero con los conocimientos y la actitud que tenía antes, al ver que el ya de por sí complicado PHP me pedía a lex o flex, y que cualquiera de ellos me pedía yacc, y que no sabía qué era yacc ni aparecían enlaces de descarga para Linux tan fácilmente, seguramente hubiera abortado la idea, frustrado y me hubiera puesto a jugar algo para olvidar la idea.

Lo más pequeño me llevó a lo más grande: ahora, cuando se me presenta un problema que antes diría que no tiene por qué ser y que vino de la nada, rápidamente llegan a mi mente una lista de posibles causas que mi cerebro ordena poniendo primero a las causas más probables y comenzando a hacer una lista de posibles soluciones.

Ya no cuenteo más: tengo LAMP corriendo en mi Pc ahora y eso es definitivamente un éxito más.