Wishlist 0 ¥0.00

如何使用 WSL 在 Windows 上安装 Linux

开发人员可以在 Windows 计算机上同时访问 Windows 和 Linux 的强大功能。 通过适用于 Linux 的 Windows 子系统 (WSL),开发人员可以安装 Linux 发行版(例如 Ubuntu、OpenSUSE、Kali、Debian、Arch Linux 等),并直接在 Windows 上使用 Linux 应用程序、实用程序和 Bash 命令行工具,不用进行任何修改,也无需承担传统虚拟机或双启动设置的费用。

先决条件

必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 才能使用以下命令。 如果使用的是更早的版本,请参阅手动安装页

安装 WSL 命令

现在,可以使用单个命令安装运行 WSL 所需的一切内容。 在管理员模式下打开 PowerShell 或 Windows 命令提示符,方法是右键单击并选择“以管理员身份运行”,输入 wsl --install 命令,然后重启计算机。

PowerShell
 
wsl --install

此命令将启用运行 WSL 并安装 Linux 的 Ubuntu 发行版所需的功能。 (可以更改此默认发行版)。

如果你运行的是旧版,或只是不想使用 install 命令并希望获得分步指引,请参阅旧版 WSL 手动安装步骤

首次启动新安装的 Linux 发行版时,将打开一个控制台窗口,要求你等待将文件解压缩并存储到计算机上。 未来的所有启动时间应不到一秒。

 备注

仅当根本没有安装 WSL 时,上述命令才有效。 如果运行 wsl --install 并查看 WSL 帮助文本,请尝试运行 wsl --list --online 以查看可用发行版列表并运行 wsl --install -d <DistroName> 以安装一个发行版。 若要卸载 WSL,请参阅卸载旧版 WSL 或注销或卸载 Linux 发行版

更改默认安装的 Linux 发行版

默认情况下,安装的 Linux 分发版为 Ubuntu。 可以使用 -d 标志进行更改。

  • 若要更改安装的发行版,请输入:wsl --install -d <Distribution Name>。 将 <Distribution Name> 替换为要安装的发行版的名称。
  • 若要查看可通过在线商店下载的可用 Linux 发行版列表,请输入:wsl --list --online 或 wsl -l -o
  • 若要在初始安装后安装其他 Linux 发行版,还可使用命令:wsl --install -d <Distribution Name>

 提示

如果要通过 Linux/Bash 命令行(而不是通过 PowerShell 或命令提示符)安装其他发行版,必须在命令中使用 .exe:wsl.exe --install -d <Distribution Name> 或若要列出可用发行版,则使用:wsl.exe -l -o

如果在安装过程中遇到问题,请查看疑难解答指南的安装部分

要安装未列为可用版本的 Linux 发行版,可使用 TAR 文件导入任何 Linux 发行版。 在某些情况下,与 Arch Linux 一样,也可使用 .appx 文件进行安装。 还可以通过 WSL 创建自己的自定义 Linux 发行版,以供使用。

设置 Linux 用户信息

安装 WSL 后,需要为新安装的 Linux 发行版创建用户帐户和密码。 请参阅设置 WSL 开发环境的最佳做法指南来了解详细信息。

设置和最佳做法

建议遵循设置 WSL 开发环境的最佳做法这一指南,逐步了解以下操作:为已安装的 Linux 发行版设置用户名和密码、使用基本的 WSL 命令、安装和自定义 Windows 终端、针对 Git 版本控制进行设置、使用 VS Code 远程服务器进行代码编辑和调试、文件存储的最佳做法、设置数据库、装载外部驱动器、设置 GPU 加速等。

检查正在运行的 WSL 版本

可列出已安装的 Linux 发行版,并通过在 PowerShell 或 Windows 命令提示符中输入以下命令来检查每个发行版的 WSL 版本:wsl -l -v

要在安装新的 Linux 发行版时将默认版本设置为 WSL 1 或 WSL 2,请使用命令 wsl --set-default-version <Version#>,将 <Version#> 替换为 1 或 2。

要设置与 wsl 命令一起使用的默认 Linux 发行版,请输入 wsl -s <DistributionName> 或 wsl --set-default <DistributionName>,将 <DistributionName> 替换为要使用的 Linux 发行版的名称。 例如,从 PowerShell/CMD 输入 wsl -s Debian,将默认发行版设置为 Debian。 现在从 Powershell 运行 wsl npm init 将在 Debian 中运行 npm init 命令。

要在 PowerShell 或 Windows 命令提示符下运行特定的 WSL 发行版而不更改默认发行版,请使用命令 wsl -d <DistributionName>,将 <DistributionName> 替换为要使用的发行版的名称。

有关详细信息,请参阅 WSL 的基本命令指南。

将版本从 WSL 1 升级到 WSL 2

使用 wsl --install 命令安装的新 Linux 安装将默认设置为 WSL 2。

wsl --set-version 命令可用于从 WSL 2 降级到 WSL 1,或将以前安装的 Linux 发行版从 WSL 1 更新到 WSL 2。

要查看 Linux 发行版是设置为 WSL 1 还是 WSL 2,请使用命令 wsl -l -v

要更改版本,请使用 wsl --set-version <distro name> 2 命令将 <distro name> 替换为要更新的 Linux 发行版的名称。 例如,wsl --set-version Ubuntu-20.04 2 会将 Ubuntu 20.04 发行版设置为使用 WSL 2。

如果在 wsl --install 命令可用之前手动安装了 WSL,则可能还需要启用 WSL 2 所使用的虚拟机可选组件安装内核包(如果尚未这样做)。

如需了解更多信息,请参阅 WSL 命令参考以获取 WSL 命令列表,并参阅比较 WSL 1 和 WSL 2,获取有关用于你的工作场景的指南,或参阅设置 WSL 开发环境的最佳做法,了解有关使用 WSL 设置良好开发工作流的一般指南。

使用 WSL 运行多个 Linux 发行版的方法

WSL 支持运行想要安装的任意数量的不同 Linux 发行版。 这可能包括从 Microsoft Store 选择发行版、导入自定义发行版生成自己的自定义发行版

安装后,有几种方法可以运行 Linux 发行版:

  • 安装 Windows 终端(推荐):使用 Windows 终端支持你想要安装的任意数量的命令行,并允许你在多个标签或窗口窗格中打开它们并在多个 Linux 发行版或其他命令行(PowerShell、命令提示符、Azure CLI 等)之间快速切换。 可使用独特的配色方案、字体样式、大小、背景图像和自定义键盘快捷键来完全自定义终端。 了解详细信息。
  • 通过访问 Windows“开始”菜单并键入已安装的发行版的名称,可以直接打开 Linux 发行版。 例如:“Ubuntu”。 这会在其自己的控制台窗口中打开 Ubuntu。
  • 在 Windows 命令提示符或 PowerShell 中,可以输入已安装的发行版的名称。 例如:ubuntu
  • 在 Windows 命令提示符或 PowerShell 中,可以在当前命令行中打开默认的 Linux 发行版,方法是输入:wsl.exe
  • 在 Windows 命令提示符或 PowerShell 中,可以在当前命令行中使用默认的 Linux 发行版,而无需输入新的发行版名称,方法是输入:wsl [command]。 将 [command] 替换为 WSL 命令,例如,替换为 wsl -l -v 以列出已安装的发行版,或 wsl pwd 以查看当前目录路径在 WSL 中的装载位置。 在 PowerShell 中,命令 get-date 将提供 Windows 文件系统中的日期,而 wsl date 将提供 Linux 文件系统中的日期。

选择的方法应取决于所执行的操作。 如果已在 Windows 提示符或 PowerShell 窗口中打开 WSL 命令行并想退出,请输入命令:exit

想要试用最新的 WSL 预览功能?

加入 Windows 预览体验计划,试用 WSL 的最新功能或更新。 加入 Windows 预览体验成员后,可以在 Windows 设置菜单内选择希望从哪个频道接收预览版,以自动接收与该版本关联的任何 WSL 更新或预览功能。 可以选择:

  • 开发频道:更新最新,但稳定性低。
  • Beta 版频道:非常适合早期采用者,版本比开发频道的版本更可靠。
  • 发布预览频道:在下一版 Windows 即将公开发布之前的预览版修补程序和重要功能。

其他资源

如何更改 PHP 脚本的最大上传文件大小

本文介绍如何使用 upload_max_filesize 和 post_max_size php 指令更改 PHP 脚本的最大上传文件大小。

目录
  • 更改最大上传文件大小
  • 设置指令
  • 更多信息

更改最大上传文件大小

默认情况下,PHP 脚本的最大上传文件大小设置为 128 MB。但是,您可能希望更改这些限制。例如,您可以设置一个下限,以防止用户将大型文件上传到您的网站。为此,请更改 upload_max_filesize 和 post_max_size 指令。

为了确保文件上传正常工作,post_max_size 指令应比 upload_max_filesize 稍大。例如,以下设置演示如何将文件上传限制设置为 20 MB:

upload_max_filesize = 20M
post_max_size = 21M
要验证 upload_max_filesize 指令和其他指令的当前值,您可以使用 phpinfo() 函数。有关更多信息,请参阅此文章

设置指令

设置 php 指令的首选方法是使用控制面板中的图形工具。

有关使用 cPanel 控制面板的帐户,请参阅此文章

对于使用 Plesk 控制面板的帐户,请参阅此文章

许多帐户还允许使用自定义 php.ini 文件。有关创建自定义 php.ini 文件的说明,请参阅此文章

更多信息

mysql新创建的用户就拥有information_schema表的权限,有问题吗?需要删除这个权限吗?

mysql 8.0 新建用户:

create user 'us_user'@'%' identified by '123456';

创建完之后查看该用户的权限:

mysql> show grants for 'us_user';
+-------------------------------------+
| Grants for us_user@%                |
+-------------------------------------+
| GRANT USAGE ON *.* TO `us_user`@`%` |
+-------------------------------------+
1 row in set (0.00 sec)

使用该帐号登录,然后:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.02 sec)

请问:

(1) GRANT USAGE ON . TO us_user@% 是什么意思?我该如何取消这个权限呢?

(2)这个帐号为啥一创建就能够访问 information_schema 这个表?有危险吗?我这个帐号是准备对外公开的,我希望他仅能对我之后新建的某个数据库有所有权限,而不会对我的整个数据库造成安全漏洞。

谢谢大佬回答。

 回答:
 

1.不用。因为它不会给用户操作权限。
2.'information_schema'只提供关于数据库结构的信息,而且不能用于修改数据,所以没有安全问题。
如果你想要限制可以先创建 my_new_database:

CREATE DATABASE my_new_database;

然后分配权限:

GRANT ALL PRIVILEGES ON my_new_database.* TO 'us_user'@'%';

MySQL直接修改information_schema

引言

MySQL是一个广泛使用的关系数据库管理系统,其强大的查询和管理能力使得它成为许多应用程序的首选。然而,在很多情况下,用户可能会需要更深入地了解数据库的内部工作机制,特别是关于其系统数据库information_schema的部分。本文将探讨information_schema的作用,以及如何通过代码示例进行直接修改,同时会提供关系图和饼状图以帮助理解。

什么是information_schema?

information_schema是MySQL的一个虚拟数据库,专门用于存放有关数据库的元数据。这包括数据库中的表、列、索引、权限等信息。它并不存储实际的数据,而是为用户提供了查询数据库架构的标准方法。

information_schema的基本结构

information_schema包含多个表,最常用的有:

  • TABLES: 存储表的信息。
  • COLUMNS: 存储列的信息。
  • SCHEMATA: 存储数据库的信息。

下面是一个简单的ER图,展示information_schema的一些核心组成部分:

 

SCHEMATAVARCHARschema_nameVARCHARdefault_character_set_nameTABLESVARCHARtable_nameVARCHARtable_typeCOLUMNSVARCHARcolumn_nameVARCHARdata_typecontains

consists_of

直接修改information_schema?

许多人认为information_schema是只读的,实际上它确实是一个只读视图,用户无法直接修改该数据库的内容。其内容是由数据库内部动态生成的,因此无法通过传统的INSERT、UPDATE或DELETE语句进行修改。

但是,有时我们需要通过调整实际的数据表来影响information_schema的内容。这意味着,我们需要对数据库的对象进行操作,而不是直接修改information_schema。以下是一些常见的操作,它们将会影响到information_schema的数据。

示例代码:创建和修改表

在MySQL中,我们可以通过创建和修改表来更新information_schema的数据。以下是创建表的示例:

CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    position VARCHAR(100),
    salary DECIMAL(10, 2)
);
 

创建上述表后,我们可以查询information_schema中的TABLESCOLUMNS表,以查看有关新表的信息:

SELECT * FROM information_schema.TABLES WHERE TABLE_NAME = 'employees';
SELECT * FROM information_schema.COLUMNS WHERE TABLE_NAME = 'employees';
 

修改表结构

如果我们需要修改employees表的结构,比如添加一个新的列,可以使用以下SQL命令:

ALTER TABLE employees ADD COLUMN hire_date DATE;
 

同样地,再次查询information_schema.COLUMNS表:

SELECT * FROM information_schema.COLUMNS WHERE TABLE_NAME = 'employees';
 

新的列hire_date会出现在查询结果中。

饼状图:信息表的分类

为了更好地理解information_schema的组件,下面我们可以使用饼状图来展示这些组件之间的比例。

 

50%30%20%information_schema ComponentsTablesColumns

Schemata

结论

information_schema是MySQL中非常重要且强大的一个组成部分,尽管用户无法直接修改它,但通过对数据库表进行操作,用户可以有效地影响information_schema中的内容,从而实现更深入的数据库管理。通过本文的介绍与示例,希望读者对information_schema有了更清晰的认识,以便在使用MySQL时能够更高效地进行数据库设计和管理。

在日常数据库开发和维护中,了解information_schema的作用,以及如何通过操作实际的数据库对象来间接获取所需的信息,是非常重要的技能。希望本文能为你的MySQL学习之旅提供帮助,让你能够更好地运用这个强大的数据库管理系统。

About Us

Since 1996, our company has been focusing on domain name registration, web hosting, server hosting, website construction, e-commerce and other Internet services, and constantly practicing the concept of "providing enterprise-level solutions and providing personalized service support". As a Dell Authorized Solution Provider, we also provide hardware product solutions associated with the company's services.
 

Contact Us

Address: No. 2, Jingwu Road, Zhengzhou City, Henan Province

Phone: 0086-371-63520088 

QQ:76257322

Website: 800188.com

E-mail: This email address is being protected from spambots. You need JavaScript enabled to view it.