mysql

MySQL: Error No. 1033 Incorrect information in file: ‘filename’

Wednesday, January 20th, 2010

mysql innodbSi tienes el siguiente error al trabajar con alguna tabla InnoDB, no te alarmes y pienses que tu base de datos está destruida por completo, puede que si, quien sabe, pero primero vamos a comentar posibles  soluciones:

MySQL: Error No. 1033 Incorrect information in file: ‘filename’

1.- Sucede algunas veces que la partición /tmp cambia de permisos y esto evita que ciertos demonios como MySQL puedan hacer updates o inserts debidamente al no poder usar la partición temporal del sistema. Intentemos asignar permisos y probar nuevamente:

chmod 0777 /tmp

2.- Muchas configuraciones de my.cnf, el archivo de config de MySQL presentan una línea que impide el correcto uso de tablas InnoDB. Fíjate que exista una línea como esta:

skip-innodb

Remueves esa línea, guardas el archivo y luego reinicias MySQL.

3.- Tablas corruptas, mucha suerte pues no es lo mismo que con MyISAM, sugiero leer estos enlaces:

http://code.google.com/p/innodb-tools/

http://www.softwareprojects.com/resources/programming/t-how-to-fix-mysql-database-myisam-innodb-1634.html

http://www.mysqlperformanceblog.com/2008/07/04/recovering-innodb-table-corruption/

Resetear password root de MySQL

Wednesday, March 18th, 2009

Seguramente alguna vez por descuido hayas perdido información sobre el password de root de un servidor MySQL, si es el caso, este post te ayudará a resetearla en un par de simples pasos que describo a continuación. Este tutorial se aplica bajo sistemas RHEL y derivados (CentOS, Fedora, etc).

Resetear root password de MySQL:

# Primero detenemos el servidor MySQL:
/etc/init.d/mysqld stop

# Luego iniciamos sin tener en cuenta privilegios de usuario:
/usr/bin/mysqld_safe --skip-grant-tables

# Conectamos con el cliente MySQL:
mysql -u root

# Reseteamos el password a que más nos guste.
# reemplaza “nuevopassword” por el tuyo.
UPDATE mysql.user SET Password=PASSWORD('nuevopassword') WHERE User='root';
flush privileges;
quit;

# Reiniciamos servidor MySQL:
/etc/init.d/mysqld restart

Respaldo completo de servidor de Bases de Datos MySQL

Tuesday, February 24th, 2009

Recientemente he comenzado a usar una forma muy completa de realizar un backup completo y sólido de todas las bases de datos, usuarios y passwords. Es ideal para servidores mysql y realizar migraciones o bien restaurar todo luego de un fallo crítico de sistema, previo reload.

Para respaldar todas nuestras bases de datos, correremos el siguiente comando desde la consola, como root:

mysqldump --all-databases -p > mysql-dump.sql

Ingresamos el password de root MySQL y listo, comenzará a respaldar todo y dejará como resultado el archivo mysql-dump.sql

Ahora, si las bases de datos ocupan mucho espacio, puedes añadirle una compresión con bzip2 de ésta forma:

mysqldump --all-databases -p | bzip2 -c > mysql-dump.sql.bz2

Cómo actualizar a MySQL 5 en RHEL 3 y 4

Wednesday, November 7th, 2007

Hoy un programador que trabaja en un servidor me solicitó hacer un upgrade a MySQL 5, la plataforma era RHEL 4. Esta versión de RHEL (al igual que la 3) traen por defecto las ramas 4.x de MySQL (al igual que PHP), la forma más simple de hacer el upgrade hacia MySQL 5 fué esta:

Detenemos MySQL

service mysql stop
mkdir /root/temp && cd /root/temp

Bajamos los paquetes server, client,  shared compatibility libraries y devel como RPM desde: http://dev.mysql.com/downloads/mysql/5.0.html#downloads

Actualizamos

rpm -Uvh MySQL-server-community-5.0.45-0.rhel4.i386.rpm
rpm -Uvh MySQL-client-community-5.0.45-0.rhel4.i386.rpm
rpm -Uvh MySQL-shared-compat
-5.0.45-0.rhel4.i386.rpm
rpm -Uvh MySQL-devel-community-5.0.45-0.rhel4.i386.rpm

Editamos el archivo /etc/my.cnf y comentamos la variable base_dir.

pico /etc/my.cnf

Finalmente, agregamos el usuario MySQL, seteamos propietarios y reiniciamos el servicio:

adduser mysql
chown -R mysql:mysql /var/lib/mysql
service mysql start

Luego de esto, deberia estar todo normal corriendo bajo MySQL 5.x