Archivo

Entradas Etiquetadas ‘contraseña’

Restablecer contraseña de root en servidor MySQL

Miércoles, 8 de Diciembre de 2010 Gaspar Fernández Sin comentarios

En ocasiones, sobre todo en nuestro servidor de pruebas (que a lo mejor puede ser
nuestro servidor de producción), podemos perder la contraseña de root de MySQL, y es un
fastidio, porque se nos puede pasar por la cabeza reconfigurar el paquete y perderlo
todo, pero son momentos en los que hay que tener paciencia y si tenemos información, no
es plan de destruir gratuitamente los datos.

Para ello, dejo unos sencillos pasos con los que restableceremos la contraseña de root
de MySQL (es necesario tener privilegios en el ordenador en el que está instalado
MySQL):

1. Primero detenemos el servicio MySQL, aquí dejo tres formas dependiendo de la
distribución:

1.1. $ service mysqld stop
1.2. $ /etc/init.d/mysqld stop
1.3. $ /etc/rc.d/mysqld stop

2. Tras ello, con privilegios de root, arrancamos MySQL de un modo especial, ignorando
las tablas de privilegios.

root $ mysqld –skip-grant-tables

Dependiendo de la versión de MySQL, puede que no nos deje arrancar el demonio como
usuario root, por lo que le daremos un nombre de usuario (este será el usuario con el
que arrancará mysql)

root $ mysqld -u mysql –skip-grant-tables &

En la mayoría de los sistemas el usuario será mysql.

3. Accedemos al servicio como superusuario (ya que no se comprueban las tablas de
privilegios, tenemos acceso). Esto lo podemos hacer como usuario normal. Accederemos
también a la base de datos llamada mysql (donde estan las tablas de privilegios)

$ mysql -u root mysql &

4. Desde mysql establecemos la nueva contraseña:

mysql> UPDATE mysql.user SET Password=PASSWORD(’nueva_contraseña’) WHERE
User=’root’;
mysql> FLUSH PRIVILEGES;

5. Salimos

mysql> quit

6. Cerramos mysqld (como root), tardará unos segundos, debemos ser pacientes

$ killall mysqld

7. Iniciamos el servidor MySQL normalmente, del mismo modo que lo paramos en el paso 1:

7.1. $ service mysqld start
7.2. $ /etc/init.d/mysqld start
7.3. $ /etc/rc.d/mysqld start

Ya debemos poder trabajar normalmente con nuestra nueva contraseña.

Intercalar 2 ó más cadenas en PHP

Lunes, 9 de Agosto de 2010 Gaspar Fernández Sin comentarios

A la hora de crear un hash para una contraseña, es conveniente no incluir sólo la contraseña, sino concatenar una cadena o un número más; lo mismo cuando generamos claves para que interaccionen aplicaciones en varios servidores; aunque hay veces en que, dados los pocos datos de que disponemos a la hora de generar la clave, no tenemos mucho donde elegir a la hora de crear el hash.

Por ese motivo se me ocurrió esta función en PHP, lo que hace es intercalar cadenas, es decir, tenemos dos cadenas, y queremos generar una cadena a partir de las dos anteriores, podemos coger un carácter de una, otro de otra, y así sucesivamente (como si estuviéramos barajando) hasta formar una cadena cuya longitud es la suma de las dos. Por ejemplo si tenemos las palabras “poesia” y “binaria“, resultaría la cadena: pboiensairaia .

Aunque, ya que vamos a hacer algo así, ¿ por qué limitarlo ? Hagamos una función que soporte una cantidad indeterminada de cadenas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function intercalar($cadenas)
{
  $n_cadenas = count ($cadenas);

  if ($n_cadenas==1)        /* Si sólo hay una cadena, la devolvemos */
    return $cadenas[0];

  /* Contamos los caracteres de cada cadena y los almacenamos en un array */
  $chars_cadena=array();
  for ($i=0; $i<$n_cadenas; $i++)
    $chars_cadena[$i]=strlen($cadenas[$i]);

  $max_cadena = max ($chars_cadena); /* La cadena más larga determina cuándo paramos */
  $res='';
  /* Recorremos la longitud de cadena más larga */
  for ($j=0; $j<$max_cadena; $j++)
    {
      /* Recorremos todas las cadenas */
      for ($i=0; $i<$n_cadenas; $i++)
    {
      /* Si la cadena no está terminada añadiremos el carácter a la cadena */
      if ($j<$chars_cadena[$i])
        $res.=$cadenas[$i][$j];
    }
    }

  return $res;
}

echo intercalar (array("Poesia", "Binaria", "Blog", "Gaspar", "Programacion", "Software", "Libre"));

La cadena resultante de este ejemplo será: PBBGPSLoilaroienosofbsagpgtrirarweairaaamraecion.

Visita otras webs de la red