1.检查服务是否开启

sudo service mysql status

  stop就打开服务

sudo service mysql start

2.查看是否能远程登录

select user,host from user

  看host位置是否是你的客户机端口号或者是%(允许所有)

  没有的话添加一条 

grant all privileges on *.* to 'username'@'端口' identified by 'pwd';
flush privileges;

  如果是虚拟机上的linux(debian)找到etc/mysql/my.cnf 添加一天bind-address = 客户机端口号 不知道端口号 打开命令行工具ipconfig查看

  这边说一下如果是wsl的话需要转发端口

  打开windows powershell 执行以下内容

# mysql开机自启
wsl sudo service mysql start
# ssh开机自启
wsl sudo service ssh start

# 你需要映射到局域网中端口 $ports=@(80,443,10000,3000,5000,27701,8080); # 监听的 ip,这么写是可以来自局域网 $addr='0.0.0.0'; # 监听的端口,就是谁来访问自己 $ports_a = $ports -join ","; # 移除旧的防火墙规则 Invoke-Expression "Remove-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' " | Out-Null # 允许防火墙规则通过这些端口 Invoke-Expression "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Outbound -LocalPort $ports_a -Action Allow -Protocol TCP" | Out-Null Invoke-Expression "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Inbound -LocalPort $ports_a -Action Allow -Protocol TCP" | Out-Null # 使用 portproxy 让 Windows 转发端口 # https://docs.microsoft.com/en-us/windows-server/networking/technologies/netsh/netsh-interface-portproxy for( $i = 0; $i -lt $ports.length; $i++ ){ $port = $ports[$i]; Invoke-Expression "netsh interface portproxy delete v4tov4 listenport=$port listenaddress=$addr" | Out-Null Invoke-Expression "netsh interface portproxy add v4tov4 listenport=$port listenaddress=$addr connectport=$port connectaddress=$wslip" | Out-Null }

  

  完成上面的操作重启一下mysql服务应该就没问题了

  

如有疑问请评论区询问