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
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.
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 >:-(
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 ¬¬
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!!!!