1. 程式人生 > 其它 >Linux Mysql 遠端訪問資料庫

Linux Mysql 遠端訪問資料庫

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服務應該就沒問題了