Actualización de MySQL 4 a MySQL 5

Acabo de actualizar mi sistema Linux de Fedora Core 4 a Fedora Core 6. Aparte de un problemilla con la actualización del GRUB que he resuelto en el primer arranque, todo parecía haber ido bien. Sin embargo, la actualización de MySQL 4.x a MySQL 5.x que se ha ejecutado durante el proceso de actualización de Fedora no ha ido todo lo fina que debería. En un principio, parece que todo es correcto, pues las aplicaciones web que tenía alojadas en mi pc local seguían funcionando (y todas ellas hacen uso de MySQL en la capa de datos). Sin embargo, probando MySQL Workbench (el modelador gráfico de bases de datos), no conseguía hacer funcionar la opción de Ingeniería Inversa (dada una base de datos ya construída, extraer el esquema E/R). El error con el que me encontraba era el siguiente:

Error log:

Fetching schemata...

Schemata fetched.

Reverse engineering schema...Error calling

ReverseEngineeringMysql.reverseEngineer: Could not get routines.The schema(ta)

could not be reverse engineered (error: 0)

Could not get routines. (SHOW PROCEDURE STATUS;MySQL Error 1146: Table 'mysql.proc' doesn't exist)

He seguido esa cadena de error (mysql.proc, tabla que se genera para la gestión de procedimientos almacenados) en el bugzilla de MySQL y he visto que al parecer no soy el único al que le ha ocurrido (ver último comentario). La tabla mysql.proc se genera al instalar mysql 5. Si simplemente actualizamos de la versión 4 a la 5, tendremos problemas si no seguimos el último paso que indica explícitamente el manual, y más en concreto aquí: http://dev.mysql.com/doc/refman/5.0/en/mysql-upgrade.html

$ mysqlcheck --check-upgrade --all-databases --auto-repair
$ mysql_fix_privilege_tables

Voilá! Ahora puedo trabajar sin problemas con MySQL Workbench.

Administración remota con AjaxTerm

AjaxTermLa administración remota requiere normalmente acceso a una terminal en un sistema remoto, pero si no quieres o no puedes permitir el uso de ssh de forma directa, no hay muchas opciones alternativas. El dejar abierto el puerto ssh sin configurar correctamente puede permitir el abuso del mismo mediante ataques de fuerza bruta, y si ya tenemos el puerto 80 abierto para servir aplicaciones web, alguien puede preguntarse la razón de tener que abrir otro puerto más.

Una posible solución podría ser el uso de una terminal a través de un interfaz web. En los sistemas Linux con Apache, esto es realmente posible mediante el uso de algo como AjaxTerm. AjaxTerm es una terminal escrita en Python que usa técnicas AJAX para tratar parte de la lógica en el navegador cliente.

Puede aprender los conceptos básicos en este artículo de TechRepublic o bien ir directamente a la página oficial de AjaxTerm.

Ramas (branches) de texto en VIM

Acabo de leer un nuevo truco del editor VIM : supongamos que estás editando un documento en VIM 7.0. Llevas al menos una hora y pico retocando, etc. Y de repente te das cuenta de que has metido la pata, no sabes cómo, y has borrado en algún momento algún trozo de texto que te interesaba conservar. No hay problema, podemos recuperar el estado anterior con el comando UNDO (tecla ‘u’). Tras el undo, cuando empecemos a teclear, VIM creará una nueva rama (branch).

La creación de ramas y su completa gestión en VIM la podemos estudiar en el manual online de este potente editor. Aparte del hecho de que desconocía esta creación automática de ramas de versiones del mismo texto, también desconocía que se pueden hacer cosas como éstas:

Por ejemplo, quieres recuperar el estado del texto tal y como estaba hace 45 minutos:

:earlier 45m

Queremos movernos a la versión 30 segundos posterior:

:later 30s

Cada día me sorprende más VIM.

OpenOffice Draw y UML

En varias de mis asignaturas necesito crear diagramas UML, en concreto diagramas de clases y de secuencia. Existen varias herramientas disponibles bajo licencia abierta para estos menesteres, como ArgoUML, Umbrello o DIA, pero personalmente, por un lado me gusta trabajar y adaptar OpenOffice.org a mis necesidades, y por otro, no me gusta salir del «entorno» OpenOffice para realizar otras tareas. Además, OOo Draw me permite crear filigranas que otras las otras herramientas mencionadas no soportan. No soy el único al que le interesa crear diagramas UML en OOo, y de hecho, en el Bugzilla de esta suite ofimática he encontrado un bug con una solución parcial a lo que yo busco: una serie de flechas en OOo Draw para representar los distintos tipos de relaciones entre clases en un diagrama de clases UML.

Por mi parte, dejo aquí otro enlace con mi aportación: un Diagrama de Secuencia hecho en OOo Draw. Como lo que el resto de colegas aprovechará serán los elementos gráficos y no el texto, seguro que no os importa que el texto del diagrama esté en Euskera y que el propio diagrama sea un borrador 🙂 Estoy seguro de que aquel que busque una plantilla para comenzar a crear diagramas UML en OOo Draw, agradecerá lo que ofrezco.

MySQL Administrator en Ubuntu

MySQL Administrator es una aplicación de código abierto para gestionar el servidor de base de datos MySQL de forma gráfica. En general, tras instalarla con apt-get install mysql-admin, funciona bien, pero tiene una gran pega: al pinchar en Gestión de Usuarios la aplicación se queda colgada. Es un bug del que se está quejando mucha gente según el BugZilla de Ubuntu. Y por supuesto, alguien ha dado con un parche que permite usar esta funcionalidad de gestión de usuarios de forma gráfica (menos mal ! ) :

$ export DEBUG_DONT_SPAWN_FETCHES=1
$ mysql-admin