Lo primero de todo, y como ya hemos aprendido en la entrada anterior, para instalar paquetes en Debian o Ubuntu, utilizaremos apt-get. Hoy vamos a instalar un servidor de Bases de Datos para despues poder conectarnos a ella mediante PHP o Java, por ejemplo.

Para ello ejecutamos lo siguiente:

root@ubuntu:~# apt-get install mysql-server

A continuación nos mostrara la lista de dependencias que se van a instalar, las cuales aceptamos y continuamos. Una vez que el proceso de descarga de paquetes haya finalizado y comience el proceso de configuración de los mismos, nos pedira la clave de root (administrador) de MySQL. Tecleamos una pero que no se nos olvide. En otra ocasión escribiremos como poder cambiar la contraseña de root de MySQL en el caso de que se nos olvide.

Para probar que todo funciona correctamente, podemos conectarnos con el cliente MySQL que se ha instalado automaticamente al instalar el servidor, ejecutando lo siguiente:

root@ubuntu:~# mysql -u root -h localhost -p
Enter password: [introducimos el password]
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 43
Server version: 5.5.32-0ubuntu0.13.04.1 (Ubuntu)
 
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
 
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
mysql>

Nos pedira el password y ahora ya podemos ejecutar nuestras sentencias SQL desde la linea de comandos.

Una cosa que podemos hacer a mayores, y que nos puede venir bien en algunas ocasiones, es hacer que el servidor MySQL escuche en todas las direcciones IP y no solo en localhost, permitiendo de esta manera que se pueda acceder a nuestro servidor de Bases de Datos desde cualquier lugar del mundo, siempre y cuando creemos usuarios de MySQL que tengan esos permisos, cosa que tambien explicaremos.

Lo primero es editar el archivo /etc/mysql/my.cnf con nuestro editor favorito.

root@ubuntu:~# vi /etc/mysql/my.cnf

Y posteriormente, buscamos la linea en la que pone bind-adress (sobre la línea 47 aproximadamente), y podemos comentarla o poner la IP 0.0.0.0 para que escuche en todas las direcciones IP, o podemos ponerla una IP especifica que tenga la maquina para que de esta manera solo se pueda acceder mediante dicha IP.

45
46
47
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address           = 0.0.0.0

Una vez hecho cambios en el archivo de configuración, deberemos reiniciar el servicio:

root@ubuntu:~# service mysql restart

Ahora, ya podemos volver a entrar al servidor MySQL con el comando que hemos explicado mas arriba, y ejecutar la siguiente sentencia para dar permisos a un usuario acceder a una Base de Datos.

mysql> GRANT ALL PRIVILEGES ON test.* TO usuario@'%' IDENTIFIED BY 'password';

OJO! Con esa sentencia. Aunque en alguna ocasión nos pueda venir genial debido a que el cliente con el que nos conectamos al servidor tiene IP dinamica, lo que aquí estamos haciendo es permitir al usuario identificado con ese password, que acceda con total privilegios a la base de datos test desde cualquier ubicación. Quizas son demasiadas facilidades para que si alguien con mala intención ataca nuestro servidor de bases de datos, y a su vez, no hemos puesto una contraseña fuerte ni securizado bien, pueda entrar y robarnos datos.

Es por ello por lo que aconsejamos que el servidor MySQL escuche solo en las IPs por las que recibe conexiones, y dar privilegios a los usuarios a tan solo las IPs por las que se van a recibir esas conexiones.