Introducción a las bases de datos en Subsistema de Windows para Linux

Esta guía paso a paso le ayudará a empezar a conectar el proyecto en WSL a una base de datos. Introducción a MySQL, PostgreSQL, MongoDB, Redis, Microsoft SQL Server o SQLite.

Requisitos previos

Diferencias entre sistemas de base de datos

Entre las opciones más populares para un sistema de base de datos se incluyen las siguientes:

MySQL es una base de datos relacional sql de código abierto, que organiza los datos en una o varias tablas en las que los tipos de datos pueden estar relacionados entre sí. Es verticalmente escalable, lo que significa que una máquina definitiva hará el trabajo para usted. Actualmente es el más utilizado de los cuatro sistemas de base de datos.

PostgreSQL (a veces denominado Postgres) también es una base de datos relacional sql de código abierto con énfasis en la extensibilidad y el cumplimiento de estándares. Ahora también puede controlar JSON, pero por lo general funciona mejor para los datos estructurados, el escalado vertical y las necesidades compatibles con ACID, como el comercio electrónico y las transacciones financieras.

Microsoft SQL Server incluye SQL Server en Windows, SQL Server en Linux y SQL en Azure. Estos también son sistemas de administración de bases de datos relacionales configurados en servidores con la función principal de almacenar y recuperar datos según lo solicitado por las aplicaciones de software.

SQLite es una base de datos autocontenida de código abierto, basada en archivos, "sin servidor", conocida por su portabilidad, confiabilidad y buen rendimiento incluso en entornos de poca memoria.

MongoDB es una base de datos de documentos NoSQL de código abierto diseñada para trabajar con JSON y almacenar datos sin esquemas. Es escalable horizontalmente, lo que significa que varias máquinas más pequeñas harán el trabajo por usted. Es bueno para la flexibilidad y los datos no estructurados y el almacenamiento en caché del análisis en tiempo real.

Redis es un almacén de estructura de datos noSQL en memoria de código abierto. Usa pares clave-valor para el almacenamiento en lugar de los documentos. Redis es conocido por su flexibilidad, rendimiento y compatibilidad con lenguajes anchos. Es lo suficientemente flexible como para usarse como caché o agente de mensajes y puede usar estructuras de datos como listas, conjuntos y hashes.

El tipo de base de datos que elijas debería depender del tipo de aplicación con la que vayas a usar la base de datos. Te recomendamos que busques las ventajas y desventajas de las bases de datos estructuradas y no estructuradas y elijas la que te vaya mejor según el caso de uso.

Instalar MySQL

Para instalar MySQL en WSL (es decir, Ubuntu):

  1. Abra el terminal WSL (es decir, . Ubuntu).
  2. Actualiza los paquetes de Ubuntu: sudo apt update.
  3. Una vez actualizados los paquetes, instale MySQL con: sudo apt install mysql-server
  4. Confirma la instalación y obtén el número de versión mysql --version.

También puede ejecutar el script de seguridad incluido. Esto cambia algunas de las opciones predeterminadas menos seguras para elementos como inicios de sesión raíz remotos y usuarios de ejemplo. Para ejecutar el script de seguridad:

  1. Inicie un servidor MySQL: sudo /etc/init.d/mysql start
  2. Inicie las indicaciones del script de seguridad: sudo mysql_secure_installation
  3. La primera pregunta preguntará si desea configurar el complemento Validar contraseña, que se puede usar para probar la seguridad de la contraseña de MySQL. Después, establecerá una contraseña para el usuario raíz de MySQL, decidirá si desea quitar usuarios anónimos, decidir si permitir que el usuario raíz inicie sesión tanto local como remotamente, decida si quitar la base de datos de prueba y, por último, decidir si desea volver a cargar las tablas de privilegios inmediatamente.

Para abrir el símbolo del sistema de MySQL, escriba: sudo mysql

Para ver qué bases de datos tiene disponibles, en el símbolo del sistema mySQL, escriba: SHOW DATABASES;

Para crear una nueva base de datos, escriba: CREATE DATABASE database_name;

Para eliminar una base de datos, escriba: DROP DATABASE database_name;

Para más información sobre cómo trabajar con bases de datos MySQL, consulte la documentación de MySQL.

Para trabajar con bases de datos MySQL en VS Code, pruebe la extensión MySQL.

Instalación de PostgreSQL

Para instalar PostgreSQL en WSL (es decir, Ubuntu):

  1. Abra el terminal WSL (es decir, . Ubuntu).
  2. Actualiza los paquetes de Ubuntu: sudo apt update.
  3. Una vez que los paquetes se hayan actualizado, instala PostgreSQL (y el paquete -contrib que tenga algunas utilidades útiles) con: sudo apt install postgresql postgresql-contrib.
  4. Confirma la instalación y obtén el número de versión psql --version.

Hay 3 comandos que debes conocer una vez instales PostgreSQL:

  • sudo service postgresql status para comprobar el estado de la base de datos.
  • sudo service postgresql start para empezar a ejecutar la base de datos.
  • sudo service postgresql stop para detener la ejecución de la base de datos.

El usuario administrador predeterminado, postgres, necesita tener una contraseña asignada para poder conectarse a una base de datos. Para establecer una contraseña:

  1. Escribe el comando: sudo passwd postgres.
  2. Recibirás un aviso para escribir la nueva contraseña.
  3. Cierra y vuelve a abrir el terminal.

Para ejecutar PostgreSQL con el shell de psql :

  1. Inicia el servicio Postgres: sudo service postgresql start.
  2. Conéctate al servicio Postgres y abre el shell de psql: sudo -u postgres psql.

Una vez que hayas escrito correctamente el shell de psql, verás que el cambio de la línea de comandos tiene el siguiente aspecto: postgres=#.

Nota:

Como alternativa, puedes abrir el shell de psql si cambias al usuario Postgres por su - postgres y, a continuación, escribes el comando psql.

Para salir de postgres=# escriba: \q o use la tecla de método abreviado: Ctrl+D

Para ver qué cuentas de usuario se han creado en la instalación de PostgreSQL, usa psql -c "\du"desde el terminal WSL o simplemente \du, si tienes abierto el shell de psql. Este comando mostrará columnas: Nombre de usuario de cuenta, Lista de atributos de roles y Miembro de grupos de roles. Para salir y volver a la línea de comandos, escribe q.

Para más información sobre cómo trabajar con bases de datos postgreSQL, consulte la documentación de PostgreSQL.

Para trabajar con bases de datos postgreSQL en VS Code, pruebe la extensión postgreSQL.

Instalación de MongoDB

Para instalar MongoDB (versión 5.0) en WSL (Ubuntu 20.04):

  1. Abra el terminal WSL (es decir, . Ubuntu) y vaya al directorio principal: cd ~
  2. Actualiza los paquetes de Ubuntu: sudo apt update.
  3. Importe la clave pública usada por el sistema de administración de paquetes de MongoDB: wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
  4. Cree un archivo de lista para MongoDB: echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
  5. Volver a cargar la base de datos del paquete local: sudo apt-get update
  6. Instale paquetes de MongoDB: sudo apt-get install -y mongodb-org
  7. Confirma la instalación y obtén el número de versión mongod --version.
  8. Cree un directorio para almacenar datos: mkdir -p ~/data/db
  9. Ejecute una instancia de Mongo: sudo mongod --dbpath ~/data/db
  10. Compruebe que la instancia de MongoDB se está ejecutando con: ps -e | grep 'mongod'
  11. Para salir del shell de MongoDB, use las teclas de método abreviado: Ctrl + C

Sugerencia

La instalación de MongoDB puede requerir pasos ligeramente diferentes en función de la distribución de Linux que se use para la instalación. Consulte los tutoriales de instalación de MongoDB. Tenga en cuenta también que la instalación de MongoDB puede diferir en función de la versión # que tenga como objetivo instalar. Use la lista desplegable versión en la esquina superior izquierda de la documentación de MongoDB para seleccionar la versión que se alinea con el objetivo.

Diferencias del sistema de inicialización de MongoDB

En el ejemplo anterior se ejecutó MongoDB directamente. Otros tutoriales pueden iniciar MongoDB mediante el sistema de inicialización integrado del sistema operativo. Es posible que veas que el comando sudo systemctl status mongodb se utiliza en tutoriales o artículos. Actualmente, WSL no tiene compatibilidad con systemd (un sistema de administración de servicios en Linux).

No debías notar ninguna diferencia, pero si un tutorial recomienda usar sudo systemctl, usa sudo /etc/init.d/ en su lugar. Por ejemplo, para WSL, sudo systemctl status docker sería sudo /etc/init.d/docker status, pero también puedes usar sudo service docker status.

Agregar el script de inicialización para iniciar MongoDB como servicio

Las instrucciones de instalación anteriores instalan una versión de MongoDB que no incluye un script automáticamente en /etc/init.d/. Si desea usar los comandos de servicio, puede descargar el script init.d para mongodb desde este origen, colocarlo manualmente como un archivo en esta ruta de acceso: /etc/init.d/mongodb y, a continuación, puede iniciar Mongo como servicio mediante sudo service mongodb start.

  1. Descargue el script init.d para MongoDB: curl https://raw.githubusercontent.com/mongodb/mongo/master/debian/init.d | sudo tee /etc/init.d/mongodb >/dev/null
  2. Asigne esos permisos ejecutables de script: sudo chmod +x /etc/init.d/mongodb
  3. Ahora puede usar comandos de servicio de MongoDB:
    • sudo service mongodb status para comprobar el estado de la base de datos. Debería ver una respuesta [Error] si no se está ejecutando ninguna base de datos.
    • sudo service mongodb start para empezar a ejecutar la base de datos. Debería ver una respuesta [Ok].
    • sudo service mongodb stop para detener la ejecución de la base de datos.
  4. Compruebe que está conectado al servidor de bases de datos con el comando de diagnóstico: mongo --eval 'db.runCommand({ connectionStatus: 1 })' esto generará la versión actual de la base de datos, la dirección del servidor y el puerto, y la salida del comando de estado. El valor 1 para el campo "Aceptar" en la respuesta indica que el servidor funciona.

Nota:

MongoDB tiene varios parámetros predeterminados, incluido el almacenamiento de datos en /data/db y la ejecución en el puerto 27017. Así mismo, mongod es el demonio (proceso de host para la base de datos) y mongo es el shell de la línea de comandos que se conecta a una instancia específica de mongod.

VS Code admite el trabajo con bases de datos de MongoDB a través de la extensión de Azure CosmosDB, puede crear, administrar y consultar bases de datos de MongoDB desde VS Code. Para más información, visite la documentación de VS Code: Trabajar con MongoDB.

Obtenga más información en la documentación de MongoDB:

Instalar Microsoft SQL Server

Para instalar SQL Server en WSL (es decir, Ubuntu), siga este inicio rápido: Instalación de SQL Server y creación de una base de datos en Ubuntu.

Nota:

Aunque es posible instalar y configurar SQL Server en WSL, no es una configuración compatible. Además, SQL Server en Linux requiere systemd, que no se incluye en WSL.

Para trabajar con bases de datos de Microsoft SQL Server en VS Code, pruebe la extensión MSSQL.

Instalación de SQLite

Para instalar SQLite en WSL (es decir, Ubuntu):

  1. Abra el terminal WSL (es decir, Ubuntu).
  2. Actualiza los paquetes de Ubuntu: sudo apt update.
  3. Una vez actualizados los paquetes, instale SQLite3 con: sudo apt install sqlite3
  4. Confirma la instalación y obtén el número de versión sqlite3 --version.

Para crear una base de datos de prueba, denominada "example.db", escriba: sqlite3 example.db

Para ver una lista de las bases de datos de SQLite, escriba: .databases

Para ver el estado de la base de datos, escriba: .dbinfo ?DB?

La base de datos estará vacía después de la creación. Puede crear una nueva tabla para la base de datos con CREATE TABLE empty (kol INTEGER);.

Ahora, al escribir , .dbinfo ?DB? se mostrará la base de datos que ha creado.

Para salir del símbolo del sistema de SQLite, escriba: .exit

Para obtener más información sobre cómo trabajar con una base de datos de SQLite, consulte la documentación de SQLite.

Para trabajar con bases de datos de SQLite en VS Code, pruebe la extensión SQLite.

Instalación de Redis

Para instalar Redis en WSL (es decir, Ubuntu):

  1. Abra el terminal WSL (es decir, Ubuntu).
  2. Actualiza los paquetes de Ubuntu: sudo apt update.
  3. Una vez actualizados los paquetes, instale Redis con: sudo apt install redis-server
  4. Confirma la instalación y obtén el número de versión redis-server --version.

Para empezar a ejecutar el servidor de Redis: sudo service redis-server start

Compruebe si redis funciona (redis-cli es la utilidad de interfaz de la línea de comandos para comunicarse con Redis): redis-cli ping debe devolver una respuesta de "PONG".

Para dejar de ejecutar el servidor de Redis: sudo service redis-server stop

Para más información sobre cómo trabajar con una base de datos de Redis, consulte la documentación de Redis.

Para trabajar con bases de datos de Redis en VS Code, pruebe la extensión redis.

Consulte los servicios que ejecutan y configuran alias de perfil.

Para ver los servicios que se están ejecutando actualmente en la distribución de WSL, escriba: service --status-all

Escribir sudo service mongodb start o sudo service postgres start y sudo -u postgrest psql puede resultar tedioso. Sin embargo, puedes considerar la posibilidad de configurar los alias en el archivo .profile de WSL para que estos comandos sean más rápidos de usar y más fáciles de recordar.

Para configurar tu propio alias personalizado, o acceso directo, a fin de ejecutar estos comandos:

  1. Abre el terminal de WSL y escribe cd ~ para asegurarte de que te encuentras en el directorio raíz.

  2. Abre el archivo .profile, que controla la configuración del terminal, con el editor de texto de terminal Nano: sudo nano .profile.

  3. En la parte inferior del archivo (no cambies la configuración # set PATH), agrega lo siguiente:

    # My Aliases
    alias start-pg='sudo service postgresql start'
    alias run-pg='sudo -u postgres psql'
    

    Esto te permitirá escribir start-pg para empezar a ejecutar el servicio PostgreSQL y run-pg para abrir el shell psql. Puedes cambiar start-pg y run-pg a cualquier nombre que quieras, pero ten cuidado de no sobrescribir un comando que Postgres ya uses.

  4. Una vez que hayas agregado los nuevos alias, sal del editor de texto de Nano con Control + X, selecciona Y (Sí) cuando se te pida que guardes y presiona Entrar (el nombre de archivo debe ser .profile).

  5. Cierra y vuelve a abrir el terminal de WSL y, a continuación, prueba los nuevos comandos de alias.

Solución de problemas

Error: argumento fdatasync de sincronización de directorios no válido

Asegúrese de que está ejecutando la distribución de Linux en modo WSL 2. Para obtener ayuda para cambiar de WSL 1 a WSL 2, consulte Establecer la versión de distribución en WSL 1 o WSL 2.

Recursos adicionales