SQL
¿Que es SQL y para que se usa?
SQL es un tipo de lenguaje de gestion de datos. Significa "Lenguaje de Consultas Estandar" (Standard Query Language), nos permite hacer preguntas a un servidor de base de datos relaciones como puede ser MariaDB, MySQL, PostgreSQL, etc.
El proyecto usa MariaDB/MySQL (Son practicamente intercambiables) para guardar la contraseña del router de profesores (Proximamente) y los usuarios de FreeRADIUS.
Hay un script, "aux/crear_cuentas_sql.sh" que nos ayuda a generar cuentas validas para RADIUS, dejandonos elegir entre si queremos crear cuentas con contraseñas en "plaintext" o contraseñas "cifradas", cifradas es mucho mas recomendable.
Tutoriales
Uso de SQL (General)
Para usar SQL necesitamos un set paquetes, en nuestro caso, un servidor de SQL y un cliente.
Notese: El cliente puede estar en otro equipo, aqui se toma como ejemplo un servidor con cliente local.
Para esto, podemos instalar los paquetes "mariadb-common" y "mariadb-client" con el comando de Debian, y distribuciones basadas en este, apt install mariadb-client mariadb-common.
Una vez tengamos los paquetes necesarios, podemos conectarnos a un servidor MySQL o MariaDB usando el comando de ejemplo: (Como superusuario, pues aun NO tenemos cuentas)
mysql
Lo que nos enviara a un tipo de shell de SQL. Puede tener un aspecto similar a:
MariaDB [(none)]>
Esto nos indica que estamos en un servidor MariaDB, y que no estamos en ninguna base de datos. Mas abajo explicare como interactuar con una base de datos, pero primero voy a explicar como se puede conectar a otro servidor, a una base especifica, con otro usuario, o en otro puerto.
El comando "mysql" por defecto se quiere conectar al host "127.0.0.1" (Que es localhost) y con el usuario del sistema que este ejecutando el comando, sin usar contraseña.
Esto no funciona siempre, muchas veces nos encontraremos con una base de datos que tiene un usuario diferente al que estamos usando para el login, o que tiene contraseña, aaque no esta en nuestro ordenador local, asi que vamos a aprender algunos argumentos que mysql puede necesitar en algun momento. Observa el ejemplo de abajo.
mysql -h 10.0.0.1 -u JPGAMER666 -p -D MiBaseSuperEpicaDeHacksDelFornite
¿Que hace el comando? (Paso a paso)
- mysql es el comando base (Como hemos visto antes
- -h 10.0.0.1 le dice que el Host de la base de datos esta en 10.0.0.1
- -u JPGAMER666 le indica que vamos a loguearnos con el usuario "JPGAMER666"
- -p hace al servidor consciente que queremos entrar con contraseña (Que nos la pida)
- -D MiBaseSuperEpicaDeHacksDelFornite es el nombre de la base de datos, con la "-D" para decirle que estamos entrando en esta base de datos.
- Nota: La -D Es MAYUSCULA, minuscula significa otra cosa.
Genial! Con eso tenemos lo que nos hace falta para continuar con el tutorial, el cual asumes que sabes lo mas minimo de bash.
Uso de SQL (Para RADIUS)
Para lo siguiente necesitas haberte logueado en MySQL, tienes que tener el prompt ese de "mysql [none]" (O MariaDB), cuando estes dentro tienes que hacer una serie de cosas;
- Crear un usuario
- Crear una base de datos
- Darle permisos al usuario sobre la base de datos
- "Flush" los privilegios del usuario (Recargar)
- Importar las tablas "plantillas" de FreeRADIUS
Creando un usuario
Crear un usuario es un proceso muy sencillo, podemos usar el siguiente comando (DE SQL) como referencia:
CREATE USER 'Fran' IDENTIFIED BY 'FranPassword';
Donde "Fran" es el nombre de nuestro usuario, y "FranPassword" es la contraseña.
Nos tiene que devolver algo como
Query OK, 0 rows affected (0,015 sec)
Esto nos dice que hemos creado el usuario correctamente.
Nota: El punto y coma al final NO es opcional. SQL TIENE que acabar de alguna forma, generalmente, esto se hace con un punto y coma.
Creando una base de datos
Crear una base de datos es muy sencillo, solo necesitamos un comando:
CREATE DATABASE baseradius;
Aunque tienes que tener en cuenta que la base de datos NO lleva comillas.
Dando permisos al nuevo usuario
Para darle permiso a nuestro usuario debemos ejecutar un comando similar al siguiente.
GRANT ALL ON baseradius.* TO 'Fran';
Aqui, el usuario SI LLEVA las comillas. El comando es simple, solo tenemos que saber un par de cosas.
GRANT ALL ON significa "Permitir (hacer) todo en", esto puede ser tambien GRANT READ ON o GRANT WRITE ON. (Pero tienes que usar ALL para este proyecto)
baseradius.* significa "Todas las tablas" de la base datos. Tambien puede ser SOLO una tabla o grupo de tablas.
Guardando
Para hacer que MariaDB 'vea' los cambios, aunque esto ya no es necesario, deberias ejecuta el siguiente comando
FLUSH PRIVILEGES;
Esto refresca las tablas de permisos (privilegios).