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 de 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

Las opciones más populares para un sistema de base de datos incluyen:

MySQL es una base de datos relacional SQL 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 escalable verticalmente, lo que significa que una máquina definitiva hará el trabajo por usted. Actualmente es el más usado de los cuatro sistemas de base de datos.

PostgreSQL (a veces denominado Postgres) también es una base de datos relacional de 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. También se trata de 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 independiente, basada en archivos y sin servidor de código abierto, conocida por su portabilidad, confiabilidad y buen rendimiento incluso en entornos de memoria ” baja.

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 automáticamente. Es bueno para la flexibilidad y los datos no estructurados, y el almacenamiento en caché de análisis en tiempo real.

Redis es un almacén de estructura de datos en memoria NoSQL de código abierto. Usa pares clave-valor para el almacenamiento en lugar de documentos. Redis es conocido por su flexibilidad, rendimiento y compatibilidad con lenguajes amplios. Es lo suficientemente flexible como para usarse como un agente de mensajes o caché 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 de 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.

Es posible que también quiera ejecutar el script de seguridad incluido. Esto cambia algunas de las opciones predeterminadas menos seguras para aspectos como inicios de sesión raíz remotos y usuarios de ejemplo. Para ejecutar el script de seguridad:

  1. Iniciar un servidor MySQL: sudo /etc/init.d/mysql start
  2. Inicie los mensajes del script de seguridad: sudo mysql_secure_installation
  3. El primer mensaje le preguntará si desea configurar el complemento Validar contraseña, que se puede usar para probar la seguridad ’ de la contraseña de MySQL. A continuación, establecerá una contraseña para el usuario raíz de MySQL, decidirá si quiere quitar usuarios anónimos o no, decidirá si desea permitir que el usuario raíz inicie sesión de forma local y remota, decidir si quitar la base de datos de prueba y, por último, decidir si quiere volver a cargar las tablas con 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 de 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 de MySQL.

Instalación de PostgreSQL

Para instalar PostgreSQL en WSL (es decir, Ubuntu:

  1. Abra el terminal de 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 la 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 de PostgreSQL.

Instalación de MongoDB

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

  1. Abra el terminal de 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 que usa mongoDB sistema de administración de paquetes: 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. Instalación de 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. Crear 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 usa 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 quiere instalar. Use la lista desplegable versión de la esquina superior izquierda de la documentación de MongoDB para seleccionar la versión que se alinea con su objetivo.

Diferencias del sistema de init de MongoDB

En el ejemplo anterior, se ejecutó MongoDB directamente. Otros tutoriales pueden iniciar MongoDB mediante el sistema 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 es compatible 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 init 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 mongodbdesde este origen, colocarlo manualmente como un archivo en esta ruta de acceso: 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 los permisos ejecutables de ese script: sudo chmod +x /etc/init.d/mongodb
  3. Ahora puede usar los comandos del servicio 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: se mostrará la versión actual de la base de datos, la dirección y el puerto del servidor y la salida del mongo --eval 'db.runCommand({ connectionStatus: 1 })' 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 puede trabajar 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 VS Code: Trabajar con MongoDB.

Obtenga más información en los documentos 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.

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

Instalación de SQLite

Para instalar SQLite en WSL (es decir, Ubuntu:

  1. Abra el terminal de 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?

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, vea la documentación de SQLite.

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

Instalación de Redis

Para instalar Redis en WSL (es decir, Ubuntu:

  1. Abra el terminal de 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 hablar con Redis): debería devolver una respuesta redis-cli ping de "PING".

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

Para obtener 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 VS Code, pruebe la extensión redis.

Consulte los servicios que ejecutan y configura alias de perfil.

Para ver los servicios que tiene actualmente en ejecución 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 (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 no válido de directory-sync fdatasync

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