viernes, 15 de enero de 2010

Deshabilitar el Historial de MySQL

¿Como deshabilito el historial de MySQL? No quiero que mysql recuerde los comando previos que he usado desde la linea de comando mysql>. Para algunos esto es importante ya que algunos comando que ejecutan contienen contraseña (password). Se puede ver la contraseña claramente guardada en el archivo ~/.mysql_history, y eso es algo que muchos no desean que suceda.

La característica Bash history almacena los comandos Linux escritos en la linea de comandos en el archivo ~/.bash_history. Igual que el shell de bash, mysql almacena los comando usados en la linea de comando en el archivo ~/.mysql_history.

En este articulo vamos a ver como dehabilitar el historial de mysql.

1) Ejecutar algunos comandos sql desde la linea de comandos mysql>

Conectar a mysql desde la linea de comando de Linux y ejecutar los siguientes comandos:

$ mysql -u root -pyour-password

mysql> show databases;
mysql> use information_schema;
mysql> show tables;
mysql> select table_name, table_rows from tables;

Nota: Ahora, si presionas la flecha arriba, podrás ver todos los comandos que has usado previamente en la linea de comandos.

2) El archivo ~/.mysql_history almacena el historial de mysql

Sal de la linea de comandos de mysql y revisa el archivo ~/.mysql_history el cual contiene todos los comandos sql que has ejecutado desde la linea de comandos de mysql

$ cat ~/.mysql_history
select * from versions;
show databases;
use information_schema;
show tables;
select table_name, table_rows from tables;

3) Deshabilita el historial de mysql usando la variable de ambiente MYSQL_HISTFILE

Primero remueve el archivo ~/.mysql_history

$ rm ~/.mysql_history

Luego setea la variable de ambiente MYSQL_HISTFILE a /dev/null

$ export MYSQL_HISTFILE=/dev/null

$ set | grep MYSQ
MYSQL_HISTFILE=/dev/null

Ahora, entra a mysql y ejecuta algunos comandos. Notaras que el archivo ~/.mysql_history no se esta creando ya mas.

$ mysql -u root -pyour-password
mysql> show databases;
mysql> use information_schema;
mysql> show tables;
mysql> select table_name, table_rows from tables;

$ cat ~/.mysql_history
cat: /home/usuario/.mysql_history: No such file or directory

4) Deshabilita el historial de mysql apuntando .mysql_history a /dev/null

Primero remueve el archivo ~/.mysql_history

$ rm ~/.mysql_history

Luego crea un enlace simbolico para que ~/.mysql_history apunte a /dev/null.

$ ln -s /dev/null ~/.mysql_history

$ ls -l .mysql_history
lrwxrwxrwx 1 usuario admin 9 Dec 26 19:18 /home/usuario/.mysql_history ->
/dev/null

Ahora entra a mysql y ejecuta algunos comandos. Notaras que el archivo ~/.mysql_history esta vacío y no ha guardado los comandos que has escrito.

$ mysql -u root -pyour-password
mysql> show databases;
mysql> use information_schema;
mysql> show tables;
mysql> select table_name, table_rows from tables;

$ cat ~/.mysql_history

No hay comentarios: