一、自动化脚本:
由于么每次在学习黑马点评时都得到各个地方开启各种软件,烦。所以有了以下脚本:
@echo off
title 一键启动开发环境
echo 正在启动开发环境组件,请稍候...
:: 启动 MySQL 服务(前提是已经以服务方式安装)
echo 启动 MySQL...
net start MySQL80
:: 启动 Redis
echo 启动 Redis...
start "" "D:\develop\Redis-x64-3.2.100\redis-server.exe" "D:\develop\Redis-x64-3.2.100\redis.windows.conf"
:: 启动 Nginx
echo 启动 Nginx...
cd /d "D:\My Java Code\nginx-hmdp"
start "" nginx.exe -c "D:\My Java Code\nginx-hmdp\conf\nginx.conf"
:: 启动 IDEA
echo 启动 IntelliJ IDEA...
start "" "C:\Program Files\JetBrains\IntelliJ IDEA 2023.3.2\bin\idea64.exe"
echo 所有服务已尝试启动,请检查终端窗口输出是否有错误。
pause
而在该过程中解决了一个之前一直理解错误的问题,有关mysql连接与allowPublicKeyRetrieval=true的问题。
二、mysql与allowPublicKeyRetrieval=true
在之前学习过程中,每次运行项目前端->后端->mysql这样请求数据时,都报mysql相关错误:
“com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieval is not allowed”。
而我之前一直没有细看,认为是没有开启mysql数据库。而我之前一直认为使用datagrip就会顺变开启数据库(实际不会开启,datagrip只会连接。而只要使用过datagrip查过表,上述错误就会解决)。实际是JDBC 驱动版本 与 MySQL 8.0+ 默认认证方式不兼容 的问题。
解决方法:加上allowPublicKeyRetrieval=true
#url: jdbc:mysql://127.0.0.1:3306/hmdp?useSSL=false&serverTimezone=UTC
url: jdbc:mysql://127.0.0.1:3306/hmdp?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
另外,需要注意allowPublicKeyRetrieval=true带来的安全问题,一般来说只要不将mysql端口暴露就没事。