WSL2 使用问题

1,863 阅读1分钟

一、MySQL 5.7

问题一:启动报错

No directory, logging in with HOME=/
mkdir: cannot create directory ‘//.cache’: Permission denied
-su: 19: /etc/profile.d/wsl-integration.sh: cannot create //.cache/wslu/integration: Directory nonexistent

解决办法:

usermod -d /var/lib/mysql/ mysql

问题二: 账号密码都对的情况,在Win下使用 Navicat 连接localhost出现 不能访问的问题

Access Denied for user 'root'@localhost

原因: MySQL 5.5.10 使用 auth_socket_authentication,并设置此方法为默认认证方法

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | mysql_native_password | localhost |
| mysql.sys        | *XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | mysql_native_password | localhost |
| debian-sys-maint | *XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | mysql_native_password | localhost |
| root             | *XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | mysql_native_password | %         |
+------------------+-------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)

解决办法:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Xxxx';
Query OK, 0 rows affected (0.00 sec)

再次查看可发现认证方法已改变

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | mysql_native_password | localhost |
| mysql.session    | *XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | mysql_native_password | localhost |
| mysql.sys        | *XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | mysql_native_password | localhost |
| debian-sys-maint | *XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | mysql_native_password | localhost |
| root             | *XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | mysql_native_password | %         |
+------------------+-------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)

此时,再使用 Navicat 可成功以localhost连接WSL2下的 MySQL。

二、设置默认root 账户启动

cmd 中执行:

ubuntu1804.exe config --default-user root

三、网络代理

1.ping 不通主机

关闭主机防火墙或自定义防火墙入站规则:

  1. 打开“网络和防火墙保护”,“高级设置”,右键“入站规则”,“新建规则”
  2. 规则类型选“自定义”
  3. 程序选“所有程序”
  4. 协议和端口中的“协议类型”选“任何”
  5. 作用域中,在“本地IP地址”中,选中“下列IP地址”,添加主机IP
  6. 操作和配置文件不变,随便取个名字,保存

2.设置网络代理

~/.bashrc 中增加:

# 获取主机 IP
# 主机 IP 保存在 /etc/resolv.conf 中
export hostip=$(cat /etc/resolv.conf |grep -oP '(?<=nameserver\ ).*')
alias setss='export https_proxy="http://${hostip}:7890";export http_proxy="http://${hostip}:7890";export all_proxy="socks5://${hostip}:7891";'