lunes, marzo 04, 2013

Mysql crear base de datos, usuario y asignar permisos

Es bastante habitual que en desarrollo web o en cualquier otro tipo de aplicación que utilice una base de datos MySQL necesitemos crear una base de datos de acceso limitado. Una buena práctica para no evitar problemas de seguridad es, al mismo tiempo, crear un usuario que tendrá un acceso total pero limitado únicamente a esa BD.

Podemos hacerlo con unas pocas instrucciones. Primero accedemos a nuestra base de datos con el usuario root:

$ mysql -u root -p

Seguidamente el sistema nos pedirá la contraseña del usuario root y si se la introducimos correctamente veremos la línea de comandos de la consola MySQL


Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1213049
Server version: 5.0.96-0ubuntu3 (Ubuntu)

Copyright (c) 2000, 2011, 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> 

Antes de crear la base de datos puede que queramos echar un vistazo a las que ya tenemos para comprobar si usamos algún sistema de nombres. 

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema | 
| espais             | 
| europa             | 
| inventario         | 
| mostrari           | 
| mouton             | 
| mua                | 
| mysql              | 
+--------------------+

El siguiente paso es crear la base de datos. Algo tan sencillo como:

mysql> create database database_name;
Query OK, 1 row affected (0.10 sec)

La parte más sencilla de creación de base de datos ya está lista. Ahora crearemos un usuario que tenga derechos totales sobre la misma y que es el que utilizaremos en nuestra aplicación. En mi caso un Wordpress.

mysql> create user tu_usuario identified by 'tu_password';
Query OK, 0 rows affected (0.13 sec)

Este es el momento de apuntar tu usuario y contraseña. Luego no digas que se te ha pasado. Yo suelo usar una buena contraseña generada y almacenada con KeePass para Ubuntu.

Para garantizar permisos totales sobre la base de datos recién creada al usuario el comando sería:

mysql> grant all privileges on tu_base_de_datos.* to usuario;
Query OK, 0 rows affected (0.00 sec)

Ahora deberías salir y probar con tu nuevo usuario a crear/borrar una tabla:

mysql> exit;
Bye
$ mysql -u usuario -p base_de_datos
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
.
.
.
mysql> create table tb_prueba (id int);
Query OK, 0 rows affected (0.03 sec)

mysql> drop table tb_prueba;
Query OK, 0 rows affected (0.00 sec)

Si has podido llevar a cabo las operaciones anteriores. Tu usuario y base de datos están listas para usar.