安装并配置远程 MySQL8.0 连接实现本机端连接 WSL 的 MySQL

众所周知,在Windows环境下进行配置开发工具真是让人头疼,由于已经有了WSL2,所以在安装完Ubuntu 22.04之后对其进行MySQL的配置,踩了一些坑,特此分享并记录。

安装MySQL8.0

1. 更新本地的软件包索引

首先,打开终端并更新你的本地软件包索引。这确保你安装的是最新版本的软件包。运行以下命令:

1
sudo apt update

2. 安装MySQL服务器

然后,安装MySQL服务器,默认8.0版本。运行以下命令:

1
sudo apt install mysql-server

系统会提示你确认安装过程中需要下载的数据大小。输入 Y 继续。

3. 安全配置MySQL

完成安装后,运行 mysql_secure_installation 脚本开始进行一些安全相关的配置。这个脚本会帮助你设置root密码、删除匿名用户、限制root用户访问以及删除测试数据库。运行以下命令:

1
sudo mysql_secure_installation

根据提示操作。你可能会被问及是否设置VALIDATE PASSWORD PLUGIN,这可以帮助你创建更安全的密码。根据你的需要选择是否启用它。

4. 测试MySQL安装

安装完成后,你可以运行以下命令测试MySQL服务是否成功启动:

1
sudo systemctl status mysql.service

你应该看到服务的状态为 active (running)

5. 访问MySQL

默认情况下,MySQL使用 root 用户通过 sudo 命令进行管理。要登录到MySQL服务器,使用:

1
sudo mysql

这将让你以root用户身份登录MySQL命令行接口。

6. 设置密码和安全访问权限

设置安全权限,我一般设置为最低,因为仅仅用于测试工作

1
sudo mysql_secure_installation

随后如果要使用外部程序以root用户身份登录到MySQL服务器,则在root用户下进入mysql运行下面命令:

1
2
3
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'very_strong_password';
FLUSH PRIVILEGES;

随后进行MySQL的重启:

1
service mysql restart

配置远程MySQL连接

首先,确保MySQL配置允许监听来自除本地主机外的连接。

  1. 打开MySQL的配置文件my.cnf。这个文件可能位于不同的位置,通常是/etc/mysql/mysql.conf.d/mysqld.cnf

    1
    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
  2. 找到bind-address行,它可能会设置为127.0.0.1(只监听本地连接)。将其更改为0.0.0.0以监听所有IPv4地址上的连接,或者如果你有具体的IP地址想要MySQL服务器监听,也可以设置为那个特定的地址。

    1
    bind-address = 0.0.0.0
  3. 保存文件并退出编辑器。

  4. 重启MySQL服务以应用更改。

    1
    sudo systemctl restart mysql

其次需要设置root用户可以供远程连接:

1
2
3
USE mysql;
update user set authentication_string="" where user = "root";
FLUSH PRIVILEGES;

注意这里是需要双引号,不然会报错。

实现本机端连接WSL的MySQL

首先开启 WSL2 的 systemd:

1
echo -e "[boot]\nsystemd=true" | sudo tee -a /etc/wsl.conf

使用 exit 退出 WSL2,使用 wsl --shutdown 关闭 WSL2,再重新启动

最后更改 iptable 防火墙规则:

1
2
sudo iptables -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
sudo iptables-save -c

即可让 Windows 通过本地 127.0.0.1:3306 访问 WSL2 的 MySQL Server