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服务应该就没问题了
如有疑问请评论区询问