关于WSL2下安装的mysql sever服务,如何在host或外部连接使用的问题

快速提示:
在wsl2下,不允许在外部使用root来登录mysql,所以必须使用非root的帐号来登录
所以,如果明白如何做了,下面的步骤就不必看了。
下面是,给小白用户的教程:

步骤 1: 首先,使用 WSL 命令行,并检查wsl2下安装的情况:

你可以直接使用 WSL 终端来管理和查看 MySQL 服务。这包括启动 WSL、连接到 MySQL、启动或停止 MySQL 服务等。

  1. 打开 WSL:
  • 打开命令提示符或 PowerShell,输入 wsl 回车,或直接打开你的 WSL 终端。
c:\windows>wsl
  1. 检查 MySQL 服务状态:
sudo service mysql status

得到类似如下信息:

● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2024-04-23 11:46:41 CST; 2h 56min ago
  Process: 258229 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, stat>
 Main PID: 258237 (mysqld)
   Status: "Server is operational"
    Tasks: 40 (limit: 9453)
   Memory: 406.6M
   CGroup: /system.slice/mysql.service
           └─258237 /usr/sbin/mysqld

Apr 23 11:46:41 hdh-macbookpro2 systemd[1]: Starting MySQL Community Server...
Apr 23 11:46:41 hdh-macbookpro2 systemd[1]: Started MySQL Community Server.
lines 1-13/13 (END)

说明mysql server 已正确启动

提示:**启动/停止 MySQL 服务**:
sudo service mysql start   # 启动 MySQL
sudo service mysql stop    # 停止 MySQL
sudo service mysql restart # 重启 MySQL
  1. 尝试在wsl2中,使用mysql 登录 mysql service:
    使用 root 用户登录到你的 MySQL 服务器。
 mysql -u root -p

输入root帐号对应的密码,回车,如果出现下面的信息,说明登录成功

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 45
Server version: 8.0.36-0ubuntu0.22.04.1 (Ubuntu)

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

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>

步骤 2:更改mysql service 的配置信息,以支持从外部访问:

  1. 修改 MySQL 配置文件,以监听所有地址:

    • 在 WSL 中编辑 MySQL 的配置文件 my.cnf(通常/etc/mysql/mysql.conf.d/mysqld.cnf),找到 bind-address 参数,并设置为 0.0.0.0,对mysqlx-bind-address参数,相同设置为0.0.0.0:
      [mysqld]
      bind-address = 0.0.0.0
      mysqlx-bind-address = 0.0.0.0
      
    • 保存文件并退出编辑器。
  2. 重启 MySQL 服务:

    sudo service mysql restart
    

步骤3: 为mysql service创建一个新的非root用户

创建一个新的 MySQL 用户并允许该用户从 Windows 主机连接到 WSL2 中的 MySQL 实例,需要在 WSL2 的 MySQL 服务中进行操作。以下是在 MySQL 中创建新用户并授权的步骤:

  1. 在 WSL2 中打开终端

  2. 连接到 MySQL
    执行以下命令以使用 root 用户登录到 MySQL。

    mysql -u root -p
    

    输入 root 用户的密码。

  3. 创建新用户
    使用以下 SQL 命令创建一个新用户。将 newusernamenewpassword 分别替换为你希望设定的用户名和密码。
    注意:mysql的密码策略可能要求你,大小写与非字母混合,否则创建失败

    CREATE USER 'newusername'@'%' IDENTIFIED BY 'newpassword';
    

    这里 @'%' 表示新用户可以从任何 IP 地址连接到 MySQL 服务器。

  4. 授予权限
    为新用户授予必要的权限。下面的命令授予所有数据库的所有权限,但在实际情况中,你应根据需要授予适当的权限。

    GRANT ALL PRIVILEGES ON *.* TO 'newusername'@'%' WITH GRANT OPTION;
    

    使用 GRANT 语句可以具体地授予特定的数据库和表的权限。

  5. 刷新权限
    使权限更改立即生效。

    FLUSH PRIVILEGES;
    
  6. 退出 MySQL

    exit;
    

步骤4: 从宿主window中,使用mysql客户端工具连接

  1. 从 Windows 主机连接
    在 Windows 中,打开命令提示符或 PowerShell,使用新创建的用户信息尝试连接到 WSL2 中的 MySQL。假设 WSL2 的 IP 地址为 172.20.10.2,则命令如下:

    mysql  -u newusername@localhost -p
    

    输入新用户的密码。

    正常情况,你已经能正确登录

其它技巧与知识:

1) mysql密码丢失,如何修改

方法一:在wsl下,可以使用 MySQL 客户端免密登录时:

  1. 启动 MySQL 客户端:

    mysql 
    

    如登录成功

  2. 在 MySQL 提示符下,运行 ALTER USER 命令来更改密码:

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
    

    newpassword 替换为您想要的新密码。

  3. 刷新权限并退出:

    FLUSH PRIVILEGES;
    exit;
    

方法二:在wsl下,无法访问当前密码

如果您忘记了当前的 root 密码,您需要以无密码模式启动 MySQL 服务来重置密码。按照以下步骤进行:

  1. 停止正在运行的 MySQL 服务(如果已启动):

    sudo service mysql stop
    
  2. 启动 MySQL 服务,跳过权限表:

    sudo mysqld_safe --skip-grant-tables &
    
  3. 现在您可以登录到 MySQL 服务器而不需要密码:

    mysql -u root
    
  4. 使用以下 SQL 命令重置 root 密码:

    USE mysql;
    UPDATE user SET authentication_string=PASSWORD('newpassword') WHERE User='root';
    FLUSH PRIVILEGES;
    exit;
    
  5. 重启 MySQL 服务:

    sudo service mysql restart
    

请根据您的 MySQL 版本替换相应的密码字段,较新版本的 MySQL 可能使用 authentication_string 而不是 password 字段。

2) 查看mysql 内的所有数据库

在 MySQL 中查看当前所有数据库是一个常见的操作,可以通过 MySQL 命令行界面轻松完成。如果你已经有了对 MySQL 的访问权限,可以按照以下步骤查看所有的数据库列表:

步骤 1: 登录到 MySQL

mysql -u username -p

这里 username 是你的 MySQL 用户名。在运行该命令后,系统会提示你输入密码。确保使用具有足够权限的用户账号登录。

步骤 2: 查看数据库列表

成功登录到 MySQL 后,使用以下 SQL 命令列出所有数据库:

SHOW DATABASES;

此命令会显示 MySQL 服务器上所有的数据库名称。你将能看到类似下面的输出:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| your_database_name |
+--------------------+

这个列表包括所有你有权限查看的数据库。information_schema, mysql, performance_schema, 和 sys 是 MySQL 默认的系统数据库,用于存储服务器运行时的元数据和信息。

3) 查看mysql当前登录帐号

在 Windows Subsystem for Linux (WSL) 中运行的 MySQL 实例中查询当前登录账户的信息可以通过几种方法来完成。通常,我们使用 SQL 命令来查询当前用户的信息。以下是几个查询当前登录账户的 SQL 命令:

方法 1: 使用 USER() 和 CURRENT_USER() 函数

在 MySQL 中,USER()CURRENT_USER() 是两个非常有用的函数,可以帮助你识别当前的用户会话。

  • USER() 函数 返回当前 MySQL 会话的用户名和主机名,格式为 ‘user_name@host_name’。这显示的是用于连接 MySQL 服务器的用户。

  • CURRENT_USER() 函数 返回被授予连接权限的 MySQL 账户。在有些情况下,这可能与 USER() 返回的值不同,尤其是在权限代理的情况下。

打开你的 WSL 终端,连接到 MySQL,并执行以下命令:

SELECT USER() AS user, CURRENT_USER() AS current_user;

这将显示当前会话的登录用户名以及该会话被授权的用户名。

方法 2: 使用系统变量

你还可以查询系统变量来获得当前用户信息:

SELECT @@session.user;

这个命令将返回当前会话的用户名称和主机,类似于 USER() 函数。

示例过程

  1. 打开 WSL 终端
    打开 Windows 的开始菜单,搜索 “WSL” 并打开它。

  2. 连接到 MySQL
    使用下面的命令连接到 MySQL 服务器。替换 <username> 为你的 MySQL 用户名。

    mysql -u <username> -p
    

    系统会提示你输入密码。

  3. 执行查询命令
    在 MySQL 提示符下,输入前面提到的 SQL 查询命令之一。

    SELECT USER() AS user, CURRENT_USER() AS current_user;
    
  4. 查看结果
    MySQL 将返回当前登录的用户信息和被授予权限的用户信息。

使用这些方法,你可以轻松地在 WSL 上运行的 MySQL 中识别当前登录的用户账户。这对于进行安全审核、监控或仅仅是验证当前会话的权限非常有用。

4) 查看wsl下的ip地址

由于 WSL2 使用与 Windows 主机不同的 IP 地址

ip addr show eth0

5) 查看 网络打开的端口,是否存在3306

  1. 在wsl控制台内查看
    使用 netstat -antp,得到
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      258237/mysqld
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      437/redis-server 12
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      483/sshd: /usr/sbin
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      115/systemd-resolve
tcp        0      0 0.0.0.0:33060           0.0.0.0:*               LISTEN      258237/mysqld
tcp        0      0 127.0.0.1:8888          0.0.0.0:*               LISTEN      257510/php
tcp        0      0 127.0.0.1:3306          127.0.0.1:46986         ESTABLISHED 258237/mysqld
tcp        0      0 127.0.0.1:46986         127.0.0.1:3306          ESTABLISHED -
tcp        0      0 127.0.0.1:33060         127.0.0.1:43738         ESTABLISHED 258237/mysqld
tcp        0      0 127.0.0.1:32844         127.0.0.1:3306          ESTABLISHED -
tcp        0      0 127.0.0.1:3306          127.0.0.1:32844         ESTABLISHED 258237/mysqld
tcp        0      0 127.0.0.1:43738         127.0.0.1:33060         ESTABLISHED -
tcp6       0      0 ::1:6379                :::*                    LISTEN      437/redis-server 12
tcp6       0      0 :::80                   :::*                    LISTEN      495/apache2
tcp6       0      0 :::22                   :::*                    LISTEN      483/sshd: /usr/sbin

发现,wsl中,已正确打开了 0.0.0.0:3306 端口,此外,33060也打开了

 2. **在宿主机的控制台内查看**
使用 netstat -atn,得到
活动连接

协议  本地地址          外部地址        状态           卸载状态

TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       InHost
TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       InHost
TCP    0.0.0.0:3389           0.0.0.0:0              LISTENING       InHost
TCP    0.0.0.0:5040           0.0.0.0:0              LISTENING       InHost
TCP    0.0.0.0:5357           0.0.0.0:0              LISTENING       InHost
TCP    0.0.0.0:54950          0.0.0.0:0              LISTENING       InHost
TCP    127.0.0.1:22           0.0.0.0:0              LISTENING       InHost
TCP    127.0.0.1:3306         0.0.0.0:0              LISTENING       InHost
TCP    127.0.0.1:3306         127.0.0.1:50899        ESTABLISHED     InHost
TCP    127.0.0.1:3306         127.0.0.1:52787        ESTABLISHED     InHost
TCP    127.0.0.1:4000         0.0.0.0:0              LISTENING       InHost
TCP    127.0.0.1:4000         127.0.0.1:64648        ESTABLISHED     InHost
TCP    127.0.0.1:6379         0.0.0.0:0              LISTENING       InHost
TCP    127.0.0.1:8680         0.0.0.0:0              LISTENING       InHost
TCP    127.0.0.1:33060        0.0.0.0:0              LISTENING       InHost
TCP    127.0.0.1:33060        127.0.0.1:52760        ESTABLISHED     InHost
TCP    127.0.0.1:49214        127.0.0.1:49215        ESTABLISHED     InHost
TCP    127.0.0.1:64648        127.0.0.1:4000         ESTABLISHED     InHost
TCP    127.0.0.1:65123        0.0.0.0:0              LISTENING       InHost
TCP    172.22.240.1:139       0.0.0.0:0              LISTENING       InHost
TCP    172.24.16.1:139        0.0.0.0:0              LISTENING       InHost
TCP    192.168.167.29:139     0.0.0.0:0              LISTENING       InHost
TCP    192.168.167.29:52611   157.148.61.140:80      ESTABLISHED     InHost
TCP    192.168.167.29:52742   210.61.249.41:443      CLOSE_WAIT      InHost
TCP    192.168.167.29:60676   183.47.121.90:80       CLOSE_WAIT      InHost
TCP    0.0.0.0:49215          0.0.0.0:0              BOUND           InHost

同样发现,在host主机中,已正确打开了 127.0.0.1:3306 端口,此外,33060也打开了

  1. 在宿主机使用 telnet 检查mysql端口打开的情况

在cmd下,

telnet localhost 3306

得到,以下信息

[
 8.0.36-0ubuntu0.22.04.1.0b.93P0l7Ds

                                       PVNLcaching_sha2_password

说明端口是打开的,否则,检查 宿主机与wsl2内的防火墙是否正确添加。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/576275.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ROS_第一个程序_Hello_world

ROS的第一个项目&#xff1a;输出Hello World 我们将学习如何创建一个简单的ROS&#xff08;Robot Operating System&#xff09;项目&#xff0c;该项目将在终端中输出"Hello World"。我们将使用Python语言进行编程。 环境准备 首先&#xff0c;确保你的计算机已…

【目标检测】基于深度学习的布匹表面缺陷检测(yolov5算法,4类,附代码和数据集)

写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。(专栏订阅用户订阅专栏后免费提供数据集和源码一份,超级VIP用户不在服务范围之内) 路虽远,行则将至;事虽难,做…

硬件24、嘉立创EDA丝印的优化和调整

1、调整全部丝印的属性 先选中一个丝印&#xff0c;然后右键点击它&#xff0c;选择查找&#xff0c;然后选择查找全部 选择查找全部这个时候可以设置所有丝印在元件的位置了&#xff0c;布局-》属性位置&#xff0c;位号&#xff0c;属性位置设置为上边&#xff0c;这时丝印就…

全志ARM-网络链接

命令扫描周围的WIFI热点 nmcli dev wifi 命令接入网络 nmcli dev wifi connect &#xff08;WiFi名&#xff0c;不要有空格&#xff09;password (WiFi密码) 查看IP地址 ip addr show wlan0或ifconfig 出现successfully就连接成功了

计应2班01

public class Demo {public void sum(double num1 , double num2){System.out.println(num1 num2);} }import org.junit.Test;public class Test1 { // 定义方法 // test sum // testSum // public void // TestTestpublic void testSum(){Demo de…

如何通过文件下发平台,让数据发挥其真正的价值?

银行网点文件下发平台是专门设计用于银行系统内部或与外部机构之间安全、高效地传输和分发文件的系统。目前使用较多的方式是FTP、邮件、物理媒介等&#xff0c;但都存在一定问题&#xff1a; 1、物理媒介&#xff1a;如U盘、光盘等&#xff0c;通过快递服务发送给分支机构&…

面向对象设计与分析(42)工厂方法模式

文章目录 定义示例实际应用 定义 工厂方法模式&#xff0c;定义一个用于创建对象的接口&#xff08;工厂方法&#xff09;&#xff0c;返回对象基类&#xff0c;让子类去实现该接口&#xff0c;从而返回具体的子类对象。 结构 工厂方法模式包含以下主要角色&#xff1a; 抽象…

观成科技:蔓灵花组织加密通信研究分析总结

1.概述 蔓灵花&#xff0c;又名"Bitter"&#xff0c;常对南亚周边及孟加拉湾海域的相关国家发起网络攻击&#xff0c;主要针对巴基斯坦和中国两国。其攻击目标主要包括政府部门、核工业、能源、国防、军工、船舶工业、航空工业以及海运等行业&#xff0c;其主要意图…

【学习笔记】Python 使用 matplotlib 画图

文章目录 安装中文显示折线图、点线图柱状图、堆积柱状图坐标轴断点参考资料 本文将介绍如何使用 Python 的 matplotlib 库画图&#xff0c;记录一些常用的画图 demo 代码 安装 # 建议先切换到虚拟环境中 pip install matplotlib中文显示 新版的 matplotlib 已经支持字体回退…

Django框架之python后端框架介绍

一、网络框架及MVC、MTV模型 1、网络框架 网络框架&#xff08;Web framework&#xff09;是一种软件框架&#xff0c;用于帮助开发人员构建Web应用程序和Web服务。它提供了一系列预先编写好的代码和工具&#xff0c;以简化开发过程并提高开发效率。网络框架通常包括以下功能…

go语言并发实战——日志收集系统(十) 重构tailfile模块实现同时监控多个日志文件

前言 在上一篇文章中&#xff0c;我们实现了通过etcd来同时指定多个不同的有关分区与日志文件的路径&#xff0c;但是锁着一次读取配置的增多&#xff0c;不可避免的出现了一个问题&#xff1a;我们如何来监控多个日志文件&#xff0c;这样原来的tailFile模块相对于当下场景就…

【JavaScript】内置对象 ④ ( Math 内置对象常用方法 | 取绝对值 | 向下取整 | 向上取整 | 四舍五入取整 | 取随机数 )

文章目录 一、Math 内置对象常用方法1、计算绝对值 - Math.abs2、取整计算 - Math.floor 向下取整 / Math.ceil 向上取整 / Math.round 四舍五入3、随机数 - Math.random4、代码示例 - 猜随机数 一、Math 内置对象常用方法 1、计算绝对值 - Math.abs 向 Math.abs() 方法中 传入…

简单的jmeter脚本自动化

1、创建线程组&#xff0c;定义自定义变量&#xff0c;保存请求默认值 2、用csv编写测试用例 备注&#xff1a;如果单元格内本身就有引号&#xff0c;则格式会有点小问题&#xff0c;不能直接修改为csv 用txt打开后 有引号的需要在最外层多包一层引号&#xff0c;每个引号前…

LM1875L-TB5-T 音频功率放大器 PDF中文资料_参数_引脚图

LM1875L-TB5-T 规格信息&#xff1a; 商品类型音频功率放大器 音频功率放大器的类型- 输出类型1-Channel (Mono) 作业电压16V ~ 60V 输出功率25W x 1 4Ω 额外特性过流保护,热保护 UTC LM1875是一款单片功率放大器&#xff0c;可为消费类音频应 用提供极低失真和高品质的…

外星人电脑丢失文件怎么找回?六大方法助你重获希望

对于许多依赖电脑进行日常工作和娱乐活动的用户来说&#xff0c;电脑中存储的文件无疑是宝贵的财富。然而&#xff0c;意外总是难以避免&#xff0c;外星人电脑也不例外。文件丢失、误删、硬盘故障等问题都可能给用户带来不小的困扰。那么&#xff0c;当外星人电脑遭遇文件丢失…

南京邮电大学计算机组成与结构四次实验报告

文章目录 资源链接预览实验一&#xff1a;算术逻辑运算实验实验二&#xff1a;存储器和总线实验实验三&#xff1a;通用寄存器实验实验四&#xff1a;综合实验的调试 资源链接 资源链接 预览 实验一&#xff1a;算术逻辑运算实验 实验二&#xff1a;存储器和总线实验 实验三&…

07 流量回放实现自动化回归测试

在本模块的前四讲里&#xff0c;我向你介绍了可以直接落地的、能够支撑百万并发的读服务的系统架构&#xff0c;包含懒加载缓存、全量缓存&#xff0c;以及数据同步等方案的技术细节。 基于上述方案及细节&#xff0c;你可以直接对你所负责的读服务进行架构升级&#xff0c;将…

pytorch-激活函数与GPU加速

目录 1. sigmod和tanh2. relu3. Leaky Relu4. selu5. softplus6. GPU加速7. 使用GPU加速手写数据训练 1. sigmod和tanh sigmod梯度区间是0&#xff5e;1&#xff0c;当梯度趋近0或者1时会出现梯度弥散的问题。 tanh区间时-1&#xff5e;1&#xff0c;是sigmod经过平移和缩放而…

第 3 篇 : Netty离线消息处理(可跳过)

说明 仅是个人的不成熟想法, 未深入研究验证 1. 修改 NettyServerHandler类 package com.hahashou.netty.server.config;import com.alibaba.fastjson.JSON; import io.netty.channel.Channel; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHan…

云计算时代:SFP、SFP+、SFP28、QSFP+和QSFP28光纤模块详解

随着数据中心的快速发展和云计算的广泛应用&#xff0c;高速、高效率的光纤网络传输成为关键需求。在众多光纤模块中&#xff0c;SFP、SFP、SFP28、QSFP和QSFP28是最常见的几种类型。本文将为您详细解析这几种光纤模块之间的区别&#xff0c;帮助您更好地了解和选择适合自己需求…