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.