项目场景:
免安装版本的mysql数据库环境部署到tomcat服务器及相关配置
1.部署前准备
对于一个新的服务器会有一些mysql需要的第三方插件需要在安装mysql前进行安装。否则会报如下错误,找不到VCRUNTIME140.dll,无法继续执行代码
遇到上述问题,可前往microsoft官网下载相关的插件
最新受支持的 Visual C++ 可再发行程序包下载 | Microsoft Learn
具体下载版本根据自身需求进行下载。
2.mysql环境部署
2.1、启动cmd命令
mysqld --initialize --console
Xh*S7Mz/14k_
启动正常如下图所示:
A temporary password is generated for root@localhost: Go.1H/87wT,y 其中Go.1H/87wT,y为我们mysql安装后默认的密码。
2.2、启动mysql服务器
mysqld --install mysql
运行正常如下图所示:
2.3修改数据库密码
这里的密码可修改也可不做修改,根据需求,引用上面的密码进行登录
mysql -root -pGo.1H/87wT,y
运行正常如下图所示:
对密码进行修改,其中'root'便是你的新密码
3.mysql安装或安装后遇到的问题:
3.1、1045 -Access denied for user 'root'@'localhost'(using password:YES)
数据库未修改密码,或者修改密码后,在连接mysql时报错:
于此类似的还有1045 -Access denied for user 'root'@'localhost'(using password:NO)
解决方法:
在上述安装过程中没有报错信息的情况下,可通过如下几方面进行排查问题
1.确认mysql是否安装成功
2.服务中查看mysql是否启动成功
3.确认密码是否正确
问题原因分析:
上述异常有两个地方需要注意:
1.Access denied:拒绝连接
2.using password:NO/YES:使用密码错误
Access denied问题出现的原因可能有如下几方面:
1.mysql没有安装成功
2.mysql安装成功了,但是没有启动
using password:NO/YES问题出现的原因:用户密码输入错误,或者未输入,对于未输入密码常见的异常就是NO,密码输入错误为YES
3.2、navicat创建连接报错
原因:在用navicat连接MySQL8+时会出现2059错误,这是由于新版本的MySQL使用的是caching_sha2_password验证方式,但此时的navicat还没有支持这种验证方式。
解决方法:就是将验证方式改为以前版本(5.7及以下)使用的验证方式mysql_native_password。
3.3、程序运行过程中报错:Caused by: java.sql.SQLException: null, message from server: "Host 'WIN-H0SB
mysql> use mysql
No connection. Trying to reconnect...
Connection id: 11
Current database: *** NONE ***
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select user,host from user;
+---------------+-----------+
| user | host |
+---------------+-----------+
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+---------------+-----------+
3 rows in set (0.03 sec)
这里的root的host是localhost,不允许远程访问,下面是对root的host进行修改为%,允许远程访问
mysql> update user set host = '%' where user = 'root';
Query OK, 1 row affected (0.04 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select user,host from user;
+---------------+-----------+
| user | host |
+---------------+-----------+
| root | % |
| mysql.session | localhost |
| mysql.sys | localhost |
+---------------+-----------+
3 rows in set (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.03 sec)
这里flush privileges是为了刷新内存中的权限,就不用重启mysql服务了
3.4、程序运行过程中报错:Caused by: java.sql.SQLException: null, message from server: "Host '19168.10.138' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"
解决方法:
- 确认lib中mysql的版本是否匹配
- 登陆mysql刷新