Solución al error: MySQL query failed: Incorrect information in file: ‘./psa/misc.frm’

Síntomas

En la página Inicio de Sesión de Parallels Plesk Panel en https://plesk.host.name:8443, aparece el siguiente error:

ERROR: PleskMainDBException
MySQL query failed: Incorrect information in file: ‘./psa/misc.frm’

0: /usr/local/psa/admin/plib/common_func.php3:216
db_query(string ‘select param, val from misc’)
1: /usr/local/psa/admin/plib/common_func.php3:513
get_param(string ‘mysql41_compatible’)
2: /usr/local/psa/admin/plib/common_func.php3:410
db_set_names()
3: /usr/local/psa/admin/plib/common_func.php3:389
db_connect_real(string ‘localhost’, string ‘admin’, string ‘***********’, string ‘psa’)
4: /usr/local/psa/admin/plib/common_func.php3:369
db_connect()
5: /usr/local/psa/admin/auto_prepend/auth.php3:87

Causa

La causa de este problema son unos permisos incorrectos al directorio /tmp. Por este motivo, MySQL no puede crear sus archivos temporales correctamente para el motor InnoDB en el inicio.

Los permisos correctos son:

~# ls -ld /tmp/
drwxrwxrwt 4 root root 36864 Aug  8 08:41 /tmp/
~#

Resolución

Corrija los permisos con el siguiente comentario:

~# chmod 1777 /tmp

Información Adicional

Para ver el error, actualice la sección [mysqld] en el archivo /etc/my.cnf con esta línea:

/etc/my.cnf
--->8---
[mysqld]
innodb_force_recovery = 4
---8<---

Ahora reinicie el servicio con:

~# /etc/init.d/mysqld restart
Stopping MySQL:                                            [  OK ]
Starting MySQL:                                            [  OK ]
~#

En el archivo de registro de errores de MySQL debería aparecer el siguiente error:

/var/log/mysqld.log
--->8---
^G/usr/libexec/mysqld: Can't create/write to file '/tmp/ib1suXEE' (Errcode: 13)
020326 22:26:17  InnoDB: Error: unable to create temporary file; errno: 13
020326 22:26:18 [Note] /usr/libexec/mysqld: ready for connections.
---8<---

La ubicación del archivo de registro de errores de MySQL se define en el archivo de configuración:

~# grep log-error /etc/my.cnf
log-error=/var/log/mysqld.log
~#

Tips y comandos útiles de Linux que no te sabías

Muchos de los que leeis este blog seguro que os considerareis unos verdaderos eruditos de GNU/Linux, otros simplemente estareis empezando con el pingüino. Sea cual sea vuestro caso aquí teneis una lista con algunos comandos curiosos que quizá no conocíais.

Nota: todos los comandos y tips mostrados a continuación deben escribirse en una sola línea.

  • Deshabilitar el historial de bash (donde se almacenan los últimos comandos ejecutados

rm ~/.bash_history ; ln -sf /dev/null .bash_history

  • Si intentas realizar una tarea reservada el sistema te dirá que no puedes por falta de permisos. Pues bien, si después quieres ejecutar la misma tarea, pero como sudo, en lugar de escribir “sudo” seguido del comando, prueba:

sudo !!

  • Para eliminar una palabra completa en la consola: Mantén presionado ESC y pulsa BACKSPACE (borrar, encima del enter).
  • Si deseas crear múltiples directorios con nombres dir1, dir2, dir3… por ejemplo, usa el comando siguiente (análogamente puedes usar este sistema con otros comandos como touch, para crear archivos):

mkdir dir{1,2,3}

  • Para usar un comando con los mismos argumentos que se le pasaron al comando anterior (en nuestro ejemplo utilizamos el comando touch, pero el sistema es el mismo para cualquier otro):

touch !*

  • Genera aleatoriamente un password (en nuestro ejemplo, de 8 caracteres –para otra longitud cambia el número 8 por el que desees–):

< /dev/urandom tr -dc A-Za-z0-9_ | head -c8 ; echo

  • Para copiar un fichero con nombre muy largo sin tener que escribirlo dos veces puedes utilizar un método llamado expansión, de la siguiente forma:

cp NombreDeArchivoMuyLargo{,.orig}

  • Si deseas ejecutar un comando en consola, pero no quieres que se muestre ninguno de los posibles errores que puedan surgir, lo mejor es redireccionar la salida de error a /dev/null (pongamos que es una especie de agujero negro, XD):

[comando_a_ejecutar] 2> /dev/null

  • Para pasar un manual del comando man a pdf, tal y como vimos en un post pasado, puedes ejecutar (todo en la misma linea):

man -t <nombre_programa> | ps2pdf – > <ruta_destino/nombre_destino.pdf>

  • Si quieres cambiar la extensión a varios archivos a la vez, prueba lo siguiente. Ten en cuenta que en este ejemplo, la extensión que tienen los archivos a modificar es “.txt” y la nueva extensión que queremos asignarles es “.html”, modifícalo a tu gusto según tus necesidades:

for i in *.txt; do mv $i ${i%%.txt}.html; done

  • ¡Demasiados argumentos!. En ciertas ocasiones la consola nos lo dirá, por ejemplo si intentamos ejecutar rm * en un directorio donde haya muchos ficheros. La solución es una pequeña tubería utilizando “ls”  y “xargs”, como la siguiente (en este ejemplo usamos el comando “rm” pero puedes emplear cualquier otro):

ls | xargs rm

  • Si quieres conocer el nombre del directorio en el que te encuentras (Ojo, no me refiero al nombre completo del tipo /home/pepe/…/naturaleza/laguna, sino sólo al nombre. Por ejemplo, en el caso anterior, el nombre sería laguna), puedes usar el siguiente comando:

echo ${PWD##*/}

Espero que os hayan venido bien estos comandos curiosos, más adelante postearé algunos más que me vayan surgiendo.

Un saludo

Busca comandos en la shell con Apropos

Es imposible conocer todos los comandos que nos ofrece cualquier shell, para solucionar este “problema” existen herramientas que nos hacen la vida más fácil, una de ellas es el comando apropos.

Apropos es un comando que busca dentro de las descripciones de cada una de las páginas man las palabras claves que le indiquemos pasandolas como argumentos. Estas palabras claves pueden contener comodines o ser la palabra clave exacta.

Por ejemplo, si quisieramos buscar comandos que sirven para copiar ficheros podríamos hacerlo del siguiente modo (suponiendo un sistema en idioma inglés):

$ apropos "copy files"
cp (1)               - copy files and directories
cpio (1)             - copy files to and from archives
install (1)          - copy files and set attributes

Como véis nos muestra tres comandos que pueden servirnos para realizar operaciones de copiado de ficheros. Otro ejemplo podría ser la búsqueda de un comando/programa para gestionar particiones:

$ apropos "partition"
addpart (8)          - simple wrapper around the "add partition" ioctl
cfdisk (8)           - Curses/slang based disk partition table manipulator for Linux
delpart (8)          - simple wrapper around the "del partition" ioctl
fdisk (8)            - Partition table manipulator for Linux
iostat (1)           - Report Central Processing Unit (CPU) statistics and input/output statistics for devices, partitions an...
mpartition (1)       - partition an MSDOS hard disk
partprobe (8)        - inform the OS of partition table changes
partx (8)            - telling the kernel about presence and numbering of on-disk partitions.
sfdisk (8)           - Partition table manipulator for Linux

Utiliza la tecla de “Windows” para abrir el menu de Ubuntu

Muchos teclados conservan aún la tecla con el logo de “Windows” (esa que esta al lado de la tecla “Alt”), pues bien ahora la podemos dar una funciona más util. Abre la consola y ejecuta el siguiente comando:

gconftool-2 --set /apps/metacity/global_keybindings/panel_main_menu --type string "Super_L"

A partir de ahora, cuando pulses la tecla Win, se abrira el menu principal de Ubuntu. 😀

Poner como Administrador un usuario en Windows XP sin ser Administrador

Como todos sabemos, en Microsoft Windows XP es posible designar a los usuarios del equipo como Administradores o como usuarios Limitados, donde los primeros tienen control total del sistema, mientras que los segundos no pueden instalar algunos programas específicos o realizar modificaciones profundas en la configuración del sistema… Para poder cambiar el tipo de usuario, es decir pasarlo de Limitado a Administrador o viceversa, se necesita realizar esto desde un usuario Administrador (lo cual tiene sentido sino cualquier persona con una cuenta de tipo Limitada podría volverse Administrador), pero hay una manera un poco rebuscada de saltearse este requisito y modificar el tipo de usuario de Microsoft Windows XP sin tener los privilegios necesarios para hacerlo…

  • Control Userpasswords2 - 01Primero que nada nos vamos a “Inicio“, luego “Ejecutar” y escribimos “control userpasswords2” (sin las comillas) para luego presionar “Aceptar“… Se nos desplegará una nueva ventana titulada “Cuentas de usuario” donde tendremos una lista de los usuarios creados en el equipo en el cual estamos trabajando, y la posibilidad de agregar nuevos, quitar o modificar los existentes…
  • Control Userpasswords2 - 02Seleccionaremos el usuario que pretendamos modificar su tipo y presionaremos en “Propiedades“… Una nueva ventana se nos abrirá mostrándonos en primer lugar el nombre de usuario, el nombre completo y una descripción del mismo, pero tendremos que situarnos en la segunda pestaña titulada “Pertenencia a grupos” para cambiar el nivel del mismo… Los tres niveles importantes que hay que tener en cuenta antes de decidir por cual seleccionar son los siguientes:
    • Usuario estándar: es el clásico usuario limitado que le permite a la persona instalar algunos programas que no modifiquen los archivos del sistema operativo, es el usuario “Limitado” del cual Microsoft Windows XP habla en “Cuentas de usuario” dentro del “Panel de control“…
    • Usuario restringido: es un nivel más bajo que el anterior, ya que le permite a la persona hacer un uso “de oficina” de la computadora (como crear documentos y guardarlos), y no le permite instalar programas o realizar modificaciones en la configuración del sistema…
    • Administradores: son los usuarios con control total del sistema y ningún tipo de limitaciones (se encuentra dentro de la tercera opción titulada “Otros“)…
  • Una vez que decidamos el nivel a designar al usuario que estamos modificando, lo seleccionaremos y presionaremos en “Aceptar” en las dos ventanas que hemos abierto… Como estamos realizando una modificación en un usuario que se encuentra en ejecución, los cambios no se aplicarán hasta que cerremos dicha sesión y la volvamos a abrir, es por eso que cuando presionemos en el segundo “Aceptar” se nos desplegará una ventana que nos invitará a cerrar sesión, por lo que queda a elección de uno si hacerlo en dicho momento o en otra ocasión…

Con esto podemos modificar cualquier usuario, y es ideal tanto para hacerlos Administradores como para hacerlos Usuarios Restringidos si se trata de una computadora de uso público o masivo… Saludos…