Win10连接WSL2-Ubuntu中的MySQL

本文介绍了如何在Windows 10环境下连接到安装在WSL2-Ubuntu上的MySQL数据库,包括安装MySQL服务,开启远程访问权限,并在Win10系统中进行连接操作。

安装

$ apt update
$ apt install mysql-server

安装完毕后重启mysql服务

$ service mysql restart

开启远程访问

# 修改配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf
$ vi /etc/mysql/mysql.conf.d/mysqld.cnf
# 注释 bind-address = 127.0.0.1

在这里插入图片描述

# 登录MySQL
$ mysql -uroot -p
# 新增用户并允许远程访问
mysql> GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%'IDENTIFIED BY '密码' WITH GRANT OPTION;
# 刷新
mysql> flush privileges;
# 重启MySQL服务
$ service mysql restart
# 查看WSL2 Ubuntu IP地址
$ ifconfig

在这里插入图片描述

在Win10中连接

# 打开CMD或Powershell,输入以下命令
# 172.19.148.248是WSL2 Ubuntu的IP地址
❯ mysql -h 172.19.148.248 -u mattxu -p
Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.7.31-0ubuntu0.18.04.1 (Ubuntu)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
<think>我们正在处理用户关于WSL2的问题:用户希望在关闭CMD窗口后,保持WSL2中的Ubuntu持续运行(即不关机)。同时,用户可能希望配置WSL2在后台运行。 根据WSL2的特性,当我们通过命令行(如CMD、PowerShell)启动WSL2Ubuntu时,关闭命令行窗口会导致该Ubuntu实例终止。这是因为WSL2实例默认与启动它的控制台窗口关联。为了保持Ubuntu持续运行,我们需要让WSL2实例在后台运行,而不是依赖于命令行窗口。解决方案:1.**使用`wsl`命令在后台启动Ubuntu**:我们可以使用`wsl`命令的`-d`选项指定发行版,并通过`-e`选项执行一个命令(例如,启动一个shell),然后让该命令在后台运行。但是,更简单的方法是直接让WSL2实例在后台运行,而不需要保持一个前台进程。2.**使用`wsl --shutdown`关闭所有实例**:在需要关闭所有WSL2实例时,可以使用此命令。但这不是我们当前需要的。3.**保持Ubuntu实例运行的关键**:WSL2实例在没有前台进程时会自动终止。因此,我们需要在Ubuntu实例中运行一个长期存在的进程(比如一个守护进程或一个shell),并确保该进程不会退出。 4. **使用`nohup`或`disown`**:在Linux中,我们可以使用`nohup`命令来运行一个忽略挂断信号的进程,这样即使启动它的终端关闭,进程也不会终止。但是,在WSL2中,我们可以在启动时直接让实例在后台运行。5.**通过Windows任务计划程序**:我们可以创建一个计划任务,在系统启动时运行WSL2实例,这样它就会在后台持续运行。但用户可能不需要开机自启,而是希望手动启动后保持运行。 6. **使用`wsl-d<发行版名>-u<用户名>-- <命令>`**:我们可以通过这个命令在后台启动一个进程,然后退出当前的控制台而不终止该进程。具体步骤:###方法1:使用`wsl`命令启动并保持后台运行我们可以在CMD或PowerShell中运行以下命令来启动Ubuntu并保持它在后台运行(即使关闭了启动它的CMD窗口): ```cmdwsl -d Ubuntu-22.04-e/bin/bash -c "whiletrue;do sleep3600;done"``` 这个命令会启动Ubuntu-22.04发行版(请根据实际安装的发行版名称调整,可以通过`wsl -l -v`查看),并执行一个无限循环的bash命令(每隔一小时睡眠一次)。这样,Ubuntu实例就会一直运行,直到我们手动停止它。但是,这种方法会占用一个后台进程,并且我们无法直接与这个实例交互(除非使用`wsl -d Ubuntu-22.04`进入另一个会话)。因此,我们通常希望的是在启动一个交互式shell后,即使关闭窗口,该实例也不会终止,但这样无法直接实现。 ###方法2:在Ubuntu中运行守护进程(推荐) 另一种方法是启动一个Ubuntu会话,并在其中运行一个守护进程(比如`screen`或`tmux`),然后我们可以在其中运行长期任务。但是,这并不能解决关闭窗口后实例终止的问题。###方法3:配置WSL2实例在后台运行(通过服务)我们可以将WSL2实例配置为Windows服务,这样它就会在后台持续运行。步骤: 1.创建一个启动脚本(例如`start_ubuntu.vbs`),内容如下:```vbsSet ws= CreateObject("Wscript.Shell") ws.run "wsl-dUbuntu-22.04",vbhide```这个VBS脚本会在后台启动WSL2Ubuntu(隐藏窗口)。然后,我们可以双击这个脚本来启动Ubuntu,此时关闭启动它的CMD窗口不会影响Ubuntu的运行(因为VBS脚本启动的进程是独立的,并且会一直运行直到我们关闭WSL实例)。 2.或者,我们可以创建一个快捷方式,目标设置为: ```cmdwscript.exe "C:\path\to\start_ubuntu.vbs" ```这样双击快捷方式即可启动。 但是,这种方法启动的Ubuntu实例会一直运行,直到我们使用`wsl--shutdown`或手动终止该进程。 ###方法4:使用`wsl`命令启动并进入,然后保持后台进程我们可以在进入Ubuntu后,启动一个后台进程(例如使用`&`),然后退出。但是,这样当我们退出shell时,如果没有其他进程,实例仍然会终止。###最佳实践:使用`wsl`命令启动服务实际上,WSL2的设计是轻量级的,可以快速启动和停止。因此,通常我们不需要保持一个实例一直运行。但是,如果用户有后台服务(如SSH服务器)需要在Ubuntu中运行,那么我们可以配置这些服务在启动时自动运行,然后使用Windows任务计划程序在开机时启动WSL实例。 然而,用户的问题是如何在关闭CMD窗口后保持运行。最直接的方法就是让WSL实例在启动时执行一个不会退出的命令(如方法1),或者使用VBS脚本在后台启动(方法3)。###补充:配置SSH服务器作为守护进程如果我们希望Ubuntu实例在后台运行服务(如SSH),我们可以:1.在Ubuntu中安装并配置SSH服务器。 2.使用以下命令启动SSH服务器(并保持运行): ```bashsudo servicessh start```3.然后,我们可以使用VBS脚本或方法1来保持实例运行。###总结步骤根据用户需求,我推荐以下步骤: 1. **确认Ubuntu发行版名称**:在CMD中运行:```cmdwsl -l -v```记下Ubuntu发行版的名称(例如`Ubuntu-22.04`)。2.**使用VBS脚本后台运行**(简单有效):-创建一个VBS文件(例如`start_ubuntu.vbs`),内容如下(替换发行版名称为实际名称):```vbsSetws =CreateObject("Wscript.Shell")ws.run "wsl-dUbuntu-22.04",0```-双击运行此脚本,此时会启动Ubuntu并在后台运行(不显示窗口)。关闭此脚本启动时可能出现的任何CMD窗口都不会影响Ubuntu实例。3. **停止后台运行的Ubuntu**:当需要停止时,可以在CMD中运行:```cmdwsl --terminateUbuntu-22.04```4.**另一种方法:使用任务计划程序**(开机自启):如果需要开机自启,可以创建一个计划任务,触发条件为“计算机启动时”,操作设置为启动命令:`wsl -d Ubuntu-22.04`。但此方法不适用于手动启动后保持关闭窗口不终止的需求。 ###注意事项-使用后台运行的实例会占用系统资源(内存等),因此在不使用时应及时终止。-我们可以通过`wsl -l -v`查看运行中的实例。 希望这些方法能够解决用户的问题。###相关问题根据用户的问题,我们可以生成以下相关问题:1.如何在WSL2中配置Ubuntu的开机自启动? 2.如何停止在后台运行的WSL2实例? 3.如何在WSL2Ubuntu中运行后台服务(如SSH、数据库等)?4.如何查看当前正在运行的WSL2实例?5.WSL2中如何配置多个服务同时启动?[^1]:引用自站内关于安装Ubuntu22.04.5LTS的描述。[^2]:引用自站内关于在Win10上安装WSL和Docker并配置GPU的教程。</think>### 如何在关闭CMD窗口时保持WSL2中的Ubuntu持续运行 要解决关闭CMD窗口导致WSL2 Ubuntu关机的问题,核心是让Ubuntu实例在后台以**守护进程模式**运行。以下是具体方法: #### 方法1:通过服务实现后台运行(推荐) 1. **创建启动脚本** 新建文本文件 `ubuntu-service.vbs`,内容如下: ```vbs Set ws = CreateObject("Wscript.Shell") ws.run "wsl -d Ubuntu-22.04 -u root /usr/sbin/service ssh start", 0 ``` - 替换 `Ubuntu-22.04` 为你的发行版名称(通过 `wsl -l -v` 查看) - `service ssh start` 可替换为其他需要保持运行的服务(如 `nginx`) 2. **设置开机自启** - 按 `Win+R` 输入 `shell:startup` - 将脚本放入启动文件夹,系统启动时会自动运行 3. **手动启动** 双击脚本即可在后台启动Ubuntu(无窗口显示) #### 方法2:使用Linux守护进程 在Ubuntu子系统内操作: ```bash # 安装systemd(WSL2默认未启用) sudo apt install systemd # 启动长期运行的服务(示例:SSH) sudo systemctl enable --now ssh # 或使用nohup保持进程 nohup sleep infinity >/dev/null 2>&1 & ``` #### 方法3:Windows任务计划 1. 创建基本任务: ```powershell $action = New-ScheduledTaskAction -Execute "wsl" -Argument "-d Ubuntu-22.04 -e /bin/bash -c 'while true; do sleep 3600; done'" Register-ScheduledTask -Action $action -TaskName "WSL_Keepalive" -User $env:USERNAME ``` 2. 该任务会每小时发送心跳保持WSL活动 #### 验证运行状态 ```powershell wsl -l -v # 查看"Running"状态 wsl --list --running ``` #### 终止后台实例 ```cmd wsl --terminate Ubuntu-22.04 ``` > **关键机制**:WSL2实例会在所有关联进程退出后自动终止[^1]。通过上述方法创建独立于CMD窗口的守护进程,即可维持子系统运行。建议优先使用方法1的VBS脚本方案,资源占用低且稳定可靠[^2]。 --- ### 相关问题 1. 如何配置WSL2中的Ubuntu开机自动启动特定服务(如MySQL/Nginx)? 2. WSL2后台运行时如何查看和管理系统资源占用? 3. 怎样实现Windows与WSL2Ubuntu之间的开机自启动脚本同步? 4. 当WSL2实例在后台运行时,如何安全地进行系统更新和升级? 5. 如何配置多个WSL2发行版同时保持后台运行? [^1]: WSL架构设计:实例生命周期与进程关联性(Microsoft Docs) [^2]: 基于WSL服务化实践方案(Linux Foundation技术文档)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值