Como tener multiples instancias de mysql en el mismo servidor

A veces es útil darle a nuestros usuarios la posibilidad de crear bases de datos y dropearlas, pero claro, es un compromiso para la seguridad ya que pueden ver y dropear bases de datos de otros usuarios, entonces lo mejor es darle una instancia separada. Un caso de esto, que es el origen de este post, es dokeos. Si lo configuramos para usar una misma base de datos hay un problema serio de perdormance, y si lo configuramos para tener múltiples bases de datos los usuarios no pueden acceder luego a ellas.

Creamos directorios separados de datos y de log

mkdir /var/lib/mysql2
chown -R mysql.mysql /var/lib/mysql2/
mkdir /var/log/mysql2
chown -R mysql.mysql /var/log/mysql2

Creamos un directorio de configuración

cp -R /etc/mysql/ /etc/mysql2

Cambiamos el puerto, el sock, el pid, y los directorios data y log

cd /etc/mysql2/
sed -i ‘s/3306/3307/g’ my.cnf
sed -i ‘s/mysqld.sock/mysqld2.sock/g’ my.cnf
sed -i ‘s/mysqld.pid/mysqld2.pid/g’ my.cnf
sed -i ‘s/var\/lib\/mysql/var\/lib\/mysql2/g’ my.cnf
sed -i ‘s/var\/log\/mysql/var\/log\/mysql2/g’ my.cnf
sed -i ‘s/\/etc\/mysql\//\/etc\/mysql2\//g’ my.cnf

Inicializamos la nueva instancia

mysql_install_db –user=mysql –datadir=/var/lib/mysql2/

Iniciamos nuestra nueva instancia

mysqld_safe –defaults-file=/etc/mysql2/my.cnf &

Cambiamos la clave del root

/usr/bin/mysqladmin -S /var/run/mysqld/mysqld2.sock -u root password ‘newpassword’

Probamos conectarnos

mysql -S /var/run/mysqld/mysqld2.sock -p -u root

Si todo marcha bien nos pedirá la clave y luego podremos loguearnos desde cualquier lado. Espero les sirva. Si necesitan un hosting que les brinde este servicio, o bien dokeos, le recomiendo Soluciones Root.

Con este simple script podemos migrar nuestras bases de datos de dokeos de una instancia a la otra:

for i in $(cat ../dbsdokeos); do echo “drop database $i” | mysql -u root –password=passwd2 -S /var/run/mysqld/mysqld2.sock; echo “create database $i” | mysql -u root –password=passwd2 -S /var/run/mysqld/mysqld2.sock; mysqldump -u admin –password=passwd1 $i | mysql -u root –password=passwd2 -S /var/run/mysqld/mysqld2.sock $i; done;

Luego solo nos queda cambiar a dokeos para que use el puerto 3307 en lugar del puerto 3306

One thought on “Como tener multiples instancias de mysql en el mismo servidor

  1. Pingback: Subir una presentación powerpoint a Dokeos para video conferencia « Matias Neiff's Blog

Comments are closed.