Ikasten.IO
Learning, Aprendiendo

What’s the default password of root user in mariadb? 8 enero, 2017

If you have just installed mariadb, you should run this command in order to set a password for the root user and secure your installation:

Besides asking you to provide the new root password, this utility will help you to remove anonymous user (created by default, intended for testing), disallow root login remotely (root should only be allowed to connect from ‘localhost’), remove test database and privileges ad reloading the privilege table. All of it just pressing the Enter key a couple of times 🙂 Not bad!

If that process doesn’t work, try this other one:

(using sudo, don’t specify any password)

Create a new database:

Grant privileges to a new user:

 

No hay comentarios en What’s the default password of root user in mariadb?

Demasiadas conexiones a MySQL desde R 5 marzo, 2016

Estoy desarrollando una nueva aplicación en R+Shiny. Entre otras cosas, el servidor Shiny necesita acceder a los datos de una BBDD en MySQL. Tengo código en R que accede a MySQL sin problemas, abre y cierra las conexiones bien, sin leaks  por dejar conexiones abiertas. Bueno, eso es lo que creía… cuando por alguna razón la aplicación fallaba, podían darse casos en los que alguna conexión se quedaba abierta. Por una o dos, no pasaba “nada”. Pero probando y probando, llegué a este error:

“cannot allocate a new connection — maximum of 16 connections  already opened”

Vaya… el primer problema es: ¿cómo desconecto las conexiones abiertas? La respuesta a esto en la lista de distribución de R:

Y ahora, ¿cómo evitar el error? Lo ideal sería establecer una especie de conexión singleton que se reutilizara desde todo el código. La respuesta a esto, en StackOverflow (cómo no ;-))

Este código comprueba si existe una conexión en el entorno global. Si no existe, la crea y la devuelve.
Si existe, comprueba que se pueda usar. Si no se puede usar, desconecta y vuelve a crear la conexión, para devolverla.
Es decir, funciona como una caché (o puede verse también como un objeto singleton de tipo connection).
Podríamos ignorar el parámetro group de la función getConnection y en su lugar, usar:

allí donde fuera necesario.

No hay comentarios en Demasiadas conexiones a MySQL desde R
Categorias: MySQL R

Receta rápida para optimizar MySQL 4 junio, 2014

highperformancemysqlSiguiendo con el post anterior (recordemos, tengo un servidor muy humilde en recursos que quiero aprovechar al máximo), le toca el turno al servidor MySQL.

Tengo un libro (High Performance MySQL, de la editorial O’Reilly) que -entre otras cosas- se dedica a explicar cómo obtener el mejor rendimiento de un servidor MySQL, así que en este post no voy a hacer más que abrir el melón 🙂

La cuestión es que, antes de entrar a configurar los cientos de parámetros del fichero de configuración my.cnf, quería ir a tocar los interruptores “evidentes”. ¿Hay alguna forma de encontrar fallos de configuración obvios en MySQL para hacer que este sistema gestor rinda mejor? (“rendir mejor” puede entenderse de varias formas… yo me refiero al sentido de que siga ofreciendo servicio pero que consuma menos RAM).

Pues sí… hay una pequeña aplicación, llamada mysqltuner.pl, que permite “tunear” el fichero my.cnf de forma muy sencilla. Realmente lo que hace es darte pistas y consejos sobre qué “interruptores” tocar para que el servidor rinda mejor.

Aprovechando un domain hack, el autor de la aplicación ha generado un dominio propio con el mismo nombre que la aplicación en Perl: http://mysqltuner.pl. Así que, para descargar y hacer ejecutable esta joyita, basta con hacer:

Si ejecutamos con permisos de sudoer, ni siquiera tenemos que configurar las credenciales de mysql, porque como la aplicación indica en el log:

Qué cosas… no sabía que hubiera una cuenta de mantenimiento debian con la que hacer… eso, mantenimiento de mysql 🙂 Entre otras cosas, lo primero que me dice mysqltuner es:

Vamos, que el módulo InnoDB lo tengo activado (consumiendo memoria) y no lo uso. Sabiendo que mi server si algo tiene que cuidar es la RAM… vamos a hacerle caso… También me dice que tengo tablas fragmentadas que convendría arreglar. Apuntado. Lo primero, antes de pifiarla (desactivando InnoDB cuando por defecto MySQL crea bases de datos InnoDB, por ejemplo), vamos a comprobar…

Je… Murphy nunca falla. Vamos a arreglar eso (quiero dejar MyISAM por defecto antes de desactivar el soporte InnoDB en MySQL). En el fichero /etc/mysql/my.cnf añado lo siguiente:

Y listo. Vamos ahora a optimizar tablas…

Pasamos de nuevo mysqltuner.pl:

y ¡premio!

Dejo un ejercicio para el lector 🙂

Eso de que el máximo de RAM que puede consumir MySQL es del 121% de la RAM instalada no me ha gustado (y a mysqltuner.pl tampoco). ¿Qué hacer para corregirlo? Lo veremos en otro post…

1 comentario en Receta rápida para optimizar MySQL

Acceso a MySQL remoto vía Android y SSH tunneling 25 abril, 2012

Otra receta, esta vez para poder acceder desde nuestro dispositivo Android a una DB MySQL remota protegida por un firewall que impide la conexión directa. Necesitaremos realizar 3 pasos:

1) Instalar Connect Bot (para la parte SSH que explicaré a continuación) y MySQL Connect (de Javier Romero).

2) Generar un túnel SSH que permita conectar el puerto 3306 del dispositivo Android al puerto 3306 de la máquina remota (vía túnel SSH, porque el puerto 3306 remoto, recuerda, está filtrado por el firewall)

Para ello, en Connect Bot mantenemos pulsada la conexión SSH que queremos tunelizar y en el menú contextual elegimos “Editar redirección de puertos”. Ahí configuramos una nueva redirección así: (la traducción del primer campo está mal, debería poner ‘nombre del túnel’ o algo similar, no nombre del usuario)

Conectamos ahora normalmente con Connect Bot (como si de una conexión SSH normal se tratara). Internamente estará abriendo el túnel.

3) Abrir una conexión con protocolo MySQL desde el cliente Android (la aplicación que haga esto en principio no sabe que el puerto 3306 local es realmente un extremo del túnel SSH. Para la aplicación Android ese puerto corresponde a una BD MySQL local!) En la imagen adjunta, “tester” es el nombre de usuario MySQL que tengas configurado en la DB remota.

¡Listo! Ya puedes ver y editar tuplas y esquemas de tus tablas cómodamente desde tu tablet Android (desde tu móvil también, pero no tan cómodamente 😉

2 comentarios en Acceso a MySQL remoto vía Android y SSH tunneling

Copiar bases de datos en MySQL 11 abril, 2011

Así que quieres copiar una base de datos de un servidor en otro… bien, nada más facil si tu SGBD resulta que es MySQL.

El comando mysqldbcopy forma parte de las utilidades de línea de comandos de MySQL Workbench. Puedes obtener la lista completa de comandos disponibles, así como sus páginas man, en la página oficial de ayuda de MySQL Utilities

2 comentarios en Copiar bases de datos en MySQL