WSL 安装及简单使用
WSL 安装及简单使用
一、什么是WSL?
Windows Subsystem for Linux (WSL) 是 Windows 10 和 Windows 11 中提供的一项功能,允许用户在 Windows 上运行 Linux 环境。
二、参考资料
官方提供的资料还是非常详细的,也可以直接看官方文档:
https://learn.microsoft.com/zh-cn/windows/wsl/install
https://learn.microsoft.com/zh-cn/windows/wsl/basic-commands
三、安装WSL
3.1 前置步骤
提示
你的Windows电脑要使用wsl需要进行一些前置配置操作
1.开启CPU虚拟化
检查方式:任务管理器-性能-CPU

2.开启子系统和虚拟机平台
开启方式:在Windows搜索框中输入“功能”,可以看到「启用或关闭Windows功能」,然后点进去往下滑,找到使用于Linux的Windows子系统和虚拟机平台,把它们勾上,然后按系统提示重启电脑。


3.2 开始安装
安装方式十分简单,就一个命令。
wsl --install
但是实际情况并没有这么简单,一般你在安装的时候都会出现各种各样的报错。
所以一般命令如下:
wsl --update
wsl --install --web-download
解释:wsl --install 默认是安装Ubuntu最新版本,--web-download 的意思是跳过Microsoft Store商店,在互联网上下载。
然而问题也可能没有这么简单,因为有的用户在执行 --update 的时候就会报错,特别是一些Windows10的用户。

此时我们还可以尝试通过 Microsoft Store 进行下载,在 Microsoft Store 搜索 wsl 就能看到。
但是但是,还可能无法通过商店下载,报错如下:

这时候该怎么办呢?
其实官方也是提供了其他下载渠道的,下载链接如下:
https://learn.microsoft.com/zh-cn/windows/wsl/install-manual#downloading-distributions
一般Windows11执行完毕 --update 就能下载了,一些比较老的Windows10就需要通过链接手动下载。
提示
通过命令安装完成之后需要设置一个用户和密码,按照提示操作就行
3.3 常用命令
# 列出可用的 Linux 发行版
wsl --list --online
# 列出已安装的 Linux 发行版
wsl --list --verbose
wsl --list -v
# 更新
wsl --update
# 安装
wsl --install
# 启动 Ubuntu20.04
wsl -d Ubuntu20.04
# 卸载 Ubuntu20.04
wsl --unregister Ubuntu20.04
四、简单使用
Windows11 下可以进入 PowerShell 看到 Ubuntu,点击右键以管理员身份运行。

Windows10 可以通过搜索找到。
进入wsl之后所有的操作就于Linux一致。
4.1 设置 root 密码及切换 root
# 设置密码
su passwd
# 切换root
su root

4.2 拷贝 windows 的文件到 wsl
# 拷贝D盘中的demo.txt到当前目录
cp /mnt/d/demo.txt ./
4.3 vscode 打开 wsl 中的项目
安装插件

连接wsl

初次连接需要下载

打开文件即可使用
问题
如果在 vscode 中编辑文件无法保存,提示没有权限,直接给文件添加权限即可
# 最暴力的解决办法
chomd -R 777 project
4.4 wsl 中的项目连接本机 mysql
1. 开启 mysql 服务
确保 windows 中的 mysql 是正常启动的。
2. 修改连接的IP
要在 wsl 中连接 windows 的 mysql,需要使用本机的IP连接,而不是127.0.0.1
# win + R 查询IP
ipconfig
3. 尝试连接
我是通过 go 代码进行连接测试
出现如下报错信息:

说明无法直接连接的。
4. 解决办法
① 在 win 中找到 mysql 的安装目录,进入 bin 目录中,可以看到有一个 mysql.exe 文件。
执行命令,进入 mysql 终端。
mysql.exe -uroot -p

② 查看 root 用户允许从哪些主机连接到 MySQL 服务器
SELECT User, Host FROM mysql.user WHERE User='root';

可以看到此时 root 用户只允许 localhost 连接,所以 wsl 无法连接是正常的。
③ 修改用户允许连接的主机
UPDATE mysql.user SET Host='%' WHERE User='root';
FLUSH PRIVILEGES;
Host=%表示允许所有主机名或 IP 地址连接到该用户User='root'表示给 root 用户设置
提示
考虑安全问题,正常部署项目最好填写指定IP或主机名
④ 再次查看允许连接的信息
SELECT User, Host FROM mysql.user WHERE User='root';

可以看到相关设置已经修改。
⑤ 重启 mysql 服务
可以使用工具进行重启,我这里安装的是小P。
