今天发现 SQLyog 突然连不上 MySQL 了,跟之前不一样的地方就是我升级了 MySQL,升级到了 MySQL 8。
原来是因为 MySQL 8 引入了新的密码验证机制。在 MySQL 8 中默认的密码验证插件从 mysql_native_password 更换为 caching_sha2_password。我的 SQLYog 版本是 12.3.1,并不支持。
其实可以通过更改 MySQL 中的密码验证方式来解决:
1、在服务器登录到 MySQL 数据库,使用管理员权限(通常是 root 用户);
2、将 root 用户的密码验证方式更改为 mysql_native_password;
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
3、刷新权限,确保更改生效。
FLUSH PRIVILEGES;
但是既然 MYSQL 8 更改成 caching_sha2_password 了,自然是应为 caching_sha2_password 更好更安全,而且以后可能逐渐放弃 mysql_native_password,我觉得自己手动修改密码验证方式不是太好,所以就只能升级 SQLyog 到支持 caching_sha2_password 的版本了。
更新成了 13.2.0 版本的 SQLyog 之后又能远程连接上 MySQL 了但是只有14天使用期,找了一篇博客:解决`SQLyog Trial`试用到期的问题(提供一个脚本解决方案)_sqlyog试用期已过-CSDN博客
发现他的这个脚本我执行之后没有起到效果,没有调用 SQLyog.exe,所以做了点修改,希望能给到有同样问题的朋友一点帮助
@echo off
setlocal EnableDelayedExpansion
title batch script for SQLyog
REM 定义常量
set "SQLYOGLocation=D:\Program Files\SQLyog Trial\SQLyog.exe"
set "RegKey=HKEY_CURRENT_USER\SOFTWARE\{d58cb4b1-47f3-45cb-a209-f298d0c3f756}"
set "ShortcutName=SQLyog.lnk"
set "ShortcutFolder=%UserProfile%\Desktop"
set "ShortcutDescription=This is a shortcut for SQLyog."
set "IconFile=%SQLYOGLocation%"
set "IconIndex=0"
set "WorkingDir=%~dp0"
set "ScriptPath=%~f0"
set "StartMenuDir=%ProgramData%\Microsoft\Windows\Start Menu\Programs"
REM 检查是否需要删除注册表项
if "%1" == "delete_registry" (
reg query !RegKey!
if %errorlevel%==0 (
reg delete !RegKey! /f
)
exit /b
)
REM 创建快捷方式
powershell -Command "$WshShell = New-Object -ComObject WScript.Shell; $Shortcut = $WshShell.CreateShortcut('!ShortcutFolder!\!ShortcutName!'); $Shortcut.TargetPath = '!ScriptPath!'; $Shortcut.WorkingDirectory = '!WorkingDir!'; $Shortcut.Arguments = 'start_sqlyog'; $Shortcut.IconLocation = '!IconFile!,!IconIndex!'; $Shortcut.Description = '!ShortcutDescription!'; $Shortcut.Save()"
xcopy "!ShortcutFolder!\!ShortcutName!" "!StartMenuDir!\!ShortcutName!" /y >nul 2>&1
REM 启动SQLyog
:start_sqlyog
start "" "!SQLYOGLocation!"
exit /b