Saltar al contenido principal

Base de datos para desenvolvemento

Nun contorno de desenvolvemento, unha base de datos de desenvolvemento é unha versión local ou de proba dunha base de datos que utilizas mentres estás a construír e probar o teu software.

Non é a base de datos real que se empregará en produción (coa información real de usuarios, pagos, etc.), senón unha que te permite simular e verificar que o teu código funciona correctamente.

Algunhas características dunha base de datos en desenvolvemento:

  • Instalada localmente ou nun servidor de proba.
  • Contén datos de exemplo ou ficticios.
  • Podes borrar e volver crear os datos moitas veces sen risco.

Esta base de datos permite traballar e probar cambios sen afectar os datos reais. En moitos casos, é usada xunto con ferramentas de migracións.

MariaDB

Imos ver como instalar e configurar unha base de datos de desenvolvemento. Neste caso utilizaremos MariaDB, pero podería utilizar outro sistema xestor de base de datos calquera.

O que si é importante é utilizar o mesmo Sistema Xestor de Base de Datos que se utilizará en produción, para evitar calquera tipo de incompatibilidade.

Instalación en Debian

Para instalar utilizaremos os seguintes comandos:

  • Actualiza a lista de paquetes:

    sudo apt update
  • Instala o servidor de maria db e o cliente de mariadb para probar que funciona

    sudo apt install mariadb-server mariadb-client

Configuración inicial de seguridade

Por último executa a configuración de seguridade:

sudo mariadb-secure-installation

Isto faranos unha serie de preguntas interactivas:

  1. Enter current password for root (enter for none) Preme Enter porque neste momento non hai contrasinal para o usuario root de MariaDB.
  2. Switch to unix_socket authentication [Y/n]. Preme en Y para cambiala configuración.
  3. Change the root password? [Y/n] Preme en Y para cambiar o contrasinal de root. Pedirache o contrasinal dúas veces.
  4. Remove anonymous users? Preme en Y para eliminalos usuarios anónimos
  5. Disallow root login remotely? Preme Y para desactivalo inicio de sesión remoto de root.
  6. Remove test database and access to it? Preme Y para eliminala base de datos de proba.
  7. Reload privilege tables now? Preme Y para aplicalos cambios anteriores.
Exemplo completo de saída de mariadb-secure-installation
NOTE: MariaDB is secure by default in Debian. Running this script is
useless at best, and misleading at worst. This script will be
removed in a future MariaDB release in Debian. Please read
mariadb-server.README.Debian for details.

Enter root user password or leave blank:

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] y
Enabled successfully (or at least no errors was emitted)!
Reloading privilege tables..
... Success!


You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
SQL executed without errors!
The operation might have been successful, or it might have not done anything.

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
SQL executed without errors!
The operation might have been successful, or it might have not done anything.

By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
- Dropping test database...
SQL executed without errors!
The operation might have been successful, or it might have not done anything.
- Removing privileges on test database...
SQL executed without errors!
The operation might have been successful, or it might have not done anything.

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
... Success!

Cleaning up...

All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Permitir conexións externas

A continuación vamos ver como permitir conexións externas. Interesante por se temos unha máquina virtual só para base de datos ou se queremos acceder por exemplo desde un cliente desde un equipo anfitrión:

  1. Edita o ficheiro de configuración:

    sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
  2. Busca a liña:

    bind-address = 127.0.0.1

    E cámbiaa por:

    bind-address = 0.0.0.0
  3. Garda e pecha (Ctrl+O, Enter, Ctrl+X).

  4. Reinicia MariaDB:

    sudo systemctl restart mariadb

Crear unha base de datos e un usuario en MariaDB

Para finalizar, quédanos crear un usuario de desenvolvemento e unha base de datos de desenvolvemento. Podemos utilizar o mesmo sistema xestor de base de datos para varias aplicacións, o que si é recomendable é crear un usuario e base de datos diferente para cada aplicación.

Entramos co cliente de MariaDB como usuario root da base de datos:

mariadb -u root -p

Executa o seguinte código para crear unha base de datos de nome tarefa_dev e usuario devuser con contrasinal abc123.:

CREATE DATABASE tarefa_dev;
CREATE USER 'devuser'@'%' IDENTIFIED BY 'abc123.';
GRANT ALL PRIVILEGES ON tarefa_dev.* TO 'devuser'@'%';
FLUSH PRIVILEGES;
EXIT;

Comproba que existe a base de datos (debería aparecer entre os resultados):

SHOW DATABASES;

Comproba que se creou correctamente o usuario (debería aparecer entre os resultados):

SELECT User, Host FROM mysql.user;

Ver os privilexios do usuario devuser:

SHOW GRANTS FOR 'devuser'@'%';

Proba agora a conectarte desde o terminal (indícase usuario e nome da base de datos):

mariadb -u devuser -p tarefa_dev