1. 程式人生 > >安裝mysql8.0.11所遇到的坑

安裝mysql8.0.11所遇到的坑

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。

關閉服務指令:

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即可。