开始使用适用于 Linux 的 Windows 子系统上的数据库

本分步指南将帮助你开始将 WSL 中的项目连接到数据库。 开始使用 MySQL、PostgreSQL、MongoDB、Redis、Microsoft SQL Server 或 SQLite。

先决条件

数据库系统之间的差异

数据库系统的一些最常用的选项包括:

MySQL 是一种开源 SQL 关系数据库,可将数据组织到一个或多个表中,其中的数据类型可能相互关联。 它可垂直缩放,这意味着一台终极计算机将为你执行工作。 它是目前四种数据库系统中应用最广泛的。

PostgreSQL(有时称为 Postgres)也是一种开源 SQL 关系数据库,着重于扩展性和标准合规性。 现在,它也可以处理 JSON,但通常更适合处理结构化数据、进行垂直缩放以及符合 ACID 的需求,例如电子商务和金融交易。

Microsoft SQL Server 包括 Windows 上的 SQL Server、Linux 上的 SQL Server 和 Azure 上的 SQL。 这些也是建立在服务器上的关系数据库管理系统,其主要功能是根据软件应用程序的要求存储和检索数据。

SQLite 是一种开源自包含、基于文件的“无服务器”数据库,以其可移植性、可靠性和即使在低内存环境中也能有良好性能而著称。

MongoDB 是一种开源 NoSQL 文档数据库,旨在处理 JSON 和存储无架构数据。 它可水平缩放的,这意味着多台较小的计算机将为你执行工作。 它适用于实现灵活性和处理非结构化数据,以及缓存实时分析。

Redis 是一种开源 NoSQL 内存数据结构存储。 它使用键值对来存储而不是文档。

安装 MySQL

要在 WSL 上运行的 Linux 发行版上安装 MySQL,只需按照 MySQL 文档中的在 Linux 上安装 MySQL 说明进行操作。可能需要首先在 wsl.conf 配置文件中启用 systemd 支持

使用 Ubuntu 发行版的示例:

  1. 打开 Ubuntu 命令行并更新可用的包:sudo apt update
  2. 更新该包后,使用以下命令安装 MySQL:sudo apt install mysql-server
  3. 确认安装并获取版本号:mysql --version
  4. 启动 MySQL Server / 检查状态:systemctl status mysql
  5. 若要打开 MySQL 提示符,请输入:sudo mysql
  6. 若要查看可用的数据库,请在 MySQL 提示符中输入:SHOW DATABASES;
  7. 若要创建新数据库,请输入:CREATE DATABASE database_name;
  8. 若要删除数据库,请输入: DROP DATABASE database_name;

有关使用 MySQL 数据库的更多信息,请参阅 MySQL 文档

若要在 VS Code 中使用 MySQL 数据库,请尝试使用 MySQL 扩展

可能还想运行包含的安全脚本。 这会更改一些不太安全的默认选项,例如远程根登录名和示例用户。 此脚本还包括更改 MySQL 根用户密码的步骤。 运行安全脚本:

  1. 启动 MySQL 服务器:sudo service mysql start
  2. 启动安全脚本提示符:sudo mysql_secure_installation
  3. 第一个提示符会询问是否要设置 VALIDATE PASSWORD COMPONENT,它可用于测试 MySQL 密码的强度。 如果要设置一些简单的密码,则不应设置此组件。
  4. 然后你将为 MySQL 根用户设置/更改密码,决定是否删除匿名用户,决定是否允许根用户本地和远程登录,决定是否删除测试数据库,最后决定是否立即重新加载特权表。

安装 PostgreSQL

要在 WSL(即 Ubuntu)上安装 PostgreSQL:

  1. 打开 WSL 终端(即 Ubuntu)。
  2. 更新 Ubuntu 包:sudo apt update
  3. 更新该包后,使用以下命令安装 PostgreSQL(和 -contrib 包,其中包含一些有用的实用程序):sudo apt install postgresql postgresql-contrib
  4. 确认安装并获取版本号:psql --version

安装 PostgreSQL 后,需要知道以下 3 个命令:

  • sudo service postgresql status 用于检查数据库的状态。
  • sudo service postgresql start 用于开始运行数据库。
  • sudo service postgresql stop 用于停止运行数据库。

默认管理员用户 postgres 需要分配的密码才能连接到数据库。 要设置密码,请执行以下操作:

  1. 输入命令:sudo passwd postgres
  2. 系统将提示你输入新密码。
  3. 关闭并重新打开终端。

通过 psql shell 运行 PostgreSQL:

  1. 启动 postgres 服务:sudo service postgresql start
  2. 连接到 postgres 服务,并打开 psql shell:sudo -u postgres psql

成功输入 psql shell 后,将显示更改为如下所示的命令行:postgres=#

注意

或者,也可以通过使用 su - postgres 切换为 postgres 用户,然后输入命令 psql 来打开 psql shell。

若要退出 postgres=# enter,请使用 \q 或使用快捷键:Ctrl+D

要查看在 PostgreSQL 安装上创建的用户帐户,请在 WSL 终端上使用 psql --command="\du";如果已打开 psql shell,则仅使用 \du。 此命令将显示列:帐户用户名、角色属性列表和角色组成员。 要返回命令行,请输入:q

有关使用 PostgreSQL 数据库的更多信息,请参阅 PostgreSQL 文档

若要在 VS Code 中使用 PostgreSQL 数据库,请尝试使用 PostgreSQL 扩展

安装 MongoDB

要安装 MongoDB,请参阅 Mongodb 文档:在 Linux 上安装 MongoDB 社区版

根据用于安装的 Linux 发行版,安装 MongoDB 需要的步骤可能略有不同。 另请注意,MongoDB 安装可能因你要安装的版本而异。 使用 MongoDB 文档左上角的版本下拉列表选择符合目标的版本。 最后,可能需要在与 WSL 一起使用的 Linux 发行版的 wsl.conf 配置文件中启用 systemd 支持systemctl 命令是 systemd init 系统的一部分,如果发行版使用的是 systemv,则它可能无法正常工作。

VS Code 支持通过 Azure CosmosDB 扩展来处理 MongoDB 数据库,你可以在 VS Code 中创建、管理和查询 MongoDB 数据库。 有关详细信息,请访问 VS Code 文档:使用 MongoDB

有关详细信息,请参阅 MongoDB 文档:

安装 Microsoft SQL Server

要在 WSL 运行的 Linux 发行版上安装 SQL Server:Linux 上的 SQL Server。 若要在 VS Code 中使用 Microsoft SQL Server 数据库,请尝试使用 MSSQL 扩展

安装 SQLite

要在 WSL(即 Ubuntu)上安装 SQLite:

  1. 打开 WSL 终端(即 Ubuntu)。
  2. 更新 Ubuntu 包:sudo apt update
  3. 更新该包后,使用以下命令安装 SQLite3:sudo apt install sqlite3
  4. 确认安装并获取版本号:sqlite3 --version

若要创建名为“example.db”的测试数据库,请输入:sqlite3 example.db

若要查看 SQLite 数据库列表,请输入:.databases

若要查看数据库的状态,请输入:.dbinfo ?DB?

数据库在创建后将为空。 可以使用 CREATE TABLE empty (kol INTEGER); 为数据库创建新表。

现在,输入 .dbinfo ?DB? 后将显示你已创建的数据库。

若要退出 SQLite 提示符,请输入:.exit

有关使用 SQLite 数据库的详细信息,请参阅 SQLite 文档

若要在 VS Code 中使用 SQLite 数据库,请尝试使用 SQLite 扩展

安装 Redis

要在 WSL(即 Ubuntu)上安装 Redis:

  1. 打开 WSL 终端(即 Ubuntu)。
  2. 更新 Ubuntu 包:sudo apt update
  3. 更新该包后,使用以下命令安装 Redis:sudo apt install redis-server
  4. 确认安装并获取版本号:redis-server --version

开始运行 Redis 服务器:sudo service redis-server start

检查 redis 是否正常工作(redis-cli 是与 Redis 对话的命令行接口实用程序):redis-cli ping。这应返回“PONG”的回复。

停止运行 Redis 服务器:sudo service redis-server stop

有关使用 Redis 数据库的详细信息,请参阅 Redis 文档

若要在 VS Code 中使用 Redis 数据库,请尝试使用 Redis 扩展

查看正在运行的服务并设置配置文件别名

若要查看当前在 WSL 发行版上运行的服务,请输入:service --status-all

键入 sudo service mongodb startsudo service postgres startsudo -u postgrest psql 可能会很繁琐。 但是,你可以考虑在 WSL 上的 .profile 文件中设置别名,使这些命令更便于使用、易于记忆。

要设置自己的自定义别名或快捷方式来执行这些命令,请执行以下操作:

  1. 打开 WSL 终端并输入 cd ~以确保位于根目录中。

  2. 使用终端文本编辑器 Nano 打开 .profile 文件,该文件可控制终端的设置:sudo nano .profile

  3. 在文件底部(请勿更改 # set PATH 设置),添加以下内容:

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

    这样你就可以输入 start-pg 开始运行 postgresql 服务,并输入 run-pg 来打开 psql shell。 start-pgrun-pg 可更改为所需的任何名称,但是请注意不要覆盖 postgres 已经使用的命令!

  4. 添加新别名后,请使用 Ctrl + X 退出 Nano 文本编辑器 - 系统提示“保存并输入”时选择 Y(是)(将文件名保留为 .profile

  5. 关闭并重新打开 WSL 终端,然后尝试使用新的别名命令。

疑难解答

错误:目录同步 fdatasync 参数无效

确保在 WSL 2 模式下运行 Linux 发行版。 如需从 WSL 1 切换到 WSL 2 的帮助,请参阅将发行版本设置为 WSL 1 或 WSL 2

其他资源