jueves, 18 de agosto de 2011

MySQL, cambiar datadir

Saludos;

Bueno si quieren tener su capeta de base datos de MySQL en otro lugar, como en mi caso, que tengo una partición con el home donde guardo todos mis proyectos, entonces este articulo les puede ser de ayuda, lo e ido actualizando cada vez que cambio de versión de Linux, y hasta el momento me a funcionado en todas.

Pongámonos en contexto, las bases de datos se encuentran almacenadas en el directorio /var/lib/mysql, y las vamos a mover al directorio /home/mysql, este ultimo lo pueden cambiar por el directorio que ustedes quieran.

Debemos empezar abriendo una ventana de terminal, parece ser que en esta versión si funcionan las teclas de acceso rápido, entonces podemos presionar CTRL+ALT+T, y nos mostrara una ventana de terminal, o, si tenemos el UNITY instalado entonces tecla Windows y escribimos terminal, y luego Enter.

Para empezar debemos autenticarnos como super usuario:

# sudo su

colocamos la clave de usuario y listo.

Lo primero que debemos hacer es detener el servicio MySQL, así podemos tener la ultima versión de las bases de datos:

# /etc/init.d/mysql stop

Ahora debemos copiar la carpeta de bases de datos, con todos sus archivos, permisos, propietarios y fechas:

# cp -rfp /var/lib/mysql /home

ahora que ya se han copiado las bases de datos a nuestro directorio entonces, cambiamos el nombre del directorio de bases de datos, en caso que algo salga mal para poder regresar atrás:

# mv /var/lib/mysql /var/lib/mysql.bak

listo, ahora creamos un enlace simbolico a la carpeta donde quedaran nuestras bases de datos.

# ln -s /home/mysql /var/lib/mysql

para que sea accesible por MySQL debemos dar la propiedad a mysql:

# chown mysql:mysql /var/lib/mysql -R
# chown mysql:mysql /home/mysql -R

también debemos dar los permisos para que podamos ingresar en este directorio

# chmod 777 /var/lib/mysql -R

y ahora ya podemos iniciar nuestro servicio de MySQL

# /etc/init.d/mysql start

y listo ya todo debe funcionar perfectamente, puede entrar y verificar que todas las bases de datos esten en listadas

# mysql -u [usuario] -p [clave]

en la linea de comandos de mysql escribimos:

mysql> Show database;

el resultado en pantalla seran todas nuestras bases de datos que estén ubicadas en la carpeta /home/mysql.


Bueno y parece que eso es todo por ahora, espero que al algunos les ayude este pequeño tutorial.

Recuerden comentar no cuesta nada pero nos engrandece  todos.

7 comentarios:

  1. Hola, he hecho los pasos para cambiar la carpeta a un lugar en home pero no he podido hacer el paso donde dice aa-complain /usr/sbin/mysql desde aqui dice que no existe y luego no he podido entrar al mysql
    da el siguiente error
    Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2). Si me pudieras ayudar te lo agradeceria lo unico que queria era anexar una base de datos ya hecha en el mysql para poder trabajar con ella pero no he podido. Gracias

    ResponderEliminar
    Respuestas
    1. Hola, gracias por leer mi blog, te cuento que este error sale cuando no se a iniciado el servicio mysql , para ver porque no se ha iniciado, puedes probar iniciarlo como un comando, para eso ejecutas como root

      ~$ mysqld

      De esta forma se iniciara el servidor como un programa y te mostrara el log de inicio de mysql para poder ver que esta fallando.

      Eliminar
  2. quisiera volver a colocar la carpeta donde estaba y solo darle permiso para colocar nuevas bases de datos ya hechas.

    ResponderEliminar
    Respuestas
    1. hola, Claro, quieres volver a tu configuracion anterior, lo que debes hacer es eliminar el enlace:

      ~$ rm /var/lib/mysql

      Ahora deberas regresar el directorio al que le hiciste copia

      ~$ mv /var/lib/mysql.bak /var/lib/mysql

      ahora deberias iniciar el servicio de mysql con

      ~$ /etc/init.d/mysqld start

      con esto ya tendras tu servicio mysql restaurado.

      Eliminar
    2. ok todo chevere muchas gracias, soy nueva con el mysql ahora me puedes ayudar a poder poner en la carpeta de mysql un archivos con mis bases de datos creadas en otro lugar? y saludos, gracias de antemano

      Eliminar
    3. Hola tendrías que volver a hacer todos los pasos anteriores y luego al iniciar el servicio mysql ver si te dice que esta ok, si no deberias usar el siguiente comando para ver los posibles errores

      ~$ cat /var/log/mysql.err

      Eliminar
  3. Oye, muchísimas gracias por responder tan rápido, voy a probar y te aviso.

    ResponderEliminar

Cualquiera que sea tu opinión, déjala escrita eso me ayudara a mejorar mi blog.