安装mysql8.0.11所遇到的坑

 

 

mysql8.0.11安装过程见:https://blog.csdn.net/m0_37179470/article/details/81026413

1、第一个错误:1251异常。

(1)安装完mysql8.0.11之后,使用Navicat客户端连接Mysql报1251错误,但是ip,端口,账号密码都是正确的。而本地通过命令登录却没有问题。

(2)出现这个原因是mysql8.0之前的版本中加密方式是mysql_native_password,而在mysql8之后,加密方式是caching_sha2_password。

(3)解决问题方法有两种,一种是升级navicat驱动,一种是把mysql用户登录密码加密方式还原成mysql_native_password。这里通过修改加密方式解决客户端登录数据库问题。

mysql -uroot -p   #进入服务器中,执行这条命令,再输入密码,即可进入mysql数据库
mysql>use mysql;
mysql>ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下用户的密码 
mysql>FLUSH PRIVILEGES; #刷新权限

修改密码验证插件,同时修改密码。(如果不想修改密码,设置成与原来一样就行)

如果想默认使用“mysql_native_password”插件认证,可以在配置文件中配置default_authentication_plugin项。

[mysqld]
# 设置3306端口
port = 3306
# 设置mysql的安装目录
basedir = D:\Program Files\mysql-8.0.11-winx64
# 设置mysql数据库的数据的存放目录
datadir = D:\Program Files\mysql-8.0.11-winx64\data
# 允许最大连接数
max_connections=20
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8

重启服务后问题即可解决;这里服务名是mysql5_pn。

扫描二维码关注公众号,回复: 2534695 查看本文章

关闭服务指令:

net stop [服务名]

启动服务指令:

net start [服务名]

2、第二个错误:使用mybatis连接mysql,抛出异常错误。

(1)异常错误:Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

(2)错误原因:数据库连接驱动的方式不适用。

(3)解决方法:使用最新的mysql连接驱动,即将`com.mysql.jdbc.Driver'改为`com.mysql.cj.jdbc.Driver'

以前版本使用的连接驱动:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://xxx.xx.xx.xxx:3306/db?characterEncoding=utf8
jdbc.username=root
jdbc.password=******

8.0.11版本的连接驱动:

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://xxx.xx.xx.xxx:3306/db?characterEncoding=utf8&useSSL=false&serverTimezone=UTC
jdbc.username=root
jdbc.password=******

mybatis连接mysql的数据源配置:

         <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
	  <property name="driverClassName">  
	      <value>com.mysql.cj.jdbc.Driver</value>
	  </property>  
	  <property name="url">  
	      <!--<value>jdbc:mysql://localhost:3306/db?characterEncoding=UTF-8</value>-->
		  <value>jdbc:mysql://localhost:3306/db?characterEncoding=utf-8&useSSL=false& serverTimezone=UTC</value>
	  </property>  
	  <property name="username">  
	      <value>root</value>  
	  </property>  
	  <property name="password">  
	      <value>******</value>
	  </property>  	
	</bean>

3、第三个警告:Establishing SSL connection without server's identity verification is not recommended 

这是因为Mysql在高版本需要指明是否进行SSL连接

解决方法:虽然不修改也不影响使用,但是如果想要不出现警告,可以在mysql连接字符串url中加入useSSL=false或者useSSL=true即可。

猜你喜欢

转载自blog.csdn.net/m0_37179470/article/details/81032896
今日推荐