MySQL8環境搭建採坑記錄
1、去官網下載deb檔案
https://dev.mysql.com/downloads/repo/apt/
2、安裝deb包
輸入root密碼後,會有互動式介面如下:
不需要動,按tab鍵移動到第五行中間的OK,回車。
回車後報apt-key之類的警告,不用管。 警告如下:
3、重新整理MySQL源
sudo apt-get update
4、在虛擬機器中安裝mysql8,不要使用ssh工具(比如secureCRT)連線虛擬安裝,因為安裝過程有基於shell的圖形介面,ssh工具可能有不支援字符集。
sudo apt-get install mysql-server
安裝過程中讓輸入密碼,我用secureCRT安裝,安裝過程看到一些亂碼,這處的亂碼其實是在讓我輸入密碼和確認密碼。
在虛擬機器中直接安裝可以看到互動式介面,讓你輸入兩次密碼
這裡重點來了,MySQL8的密碼要必須是包含大小寫和特殊字元的
如果你不這麼設定,後面比如讓別的IP訪問,都是不能訪問到的,但是裝MySQL的機器可以正常訪問。
如果出現這種情況,參考這篇文章https://blog.csdn.net/yi247630676/article/details/80352655
5、mysql啟動停止及狀態檢視
sudo service mysql status
sudo service mysql stop
sudo service mysql start
6、一些重要的檔案存放位置,重灌的時候需要清除這些地方的mysql資料夾及檔案
-
All configuration files (like
my.cnf
) are under/etc/mysql
-
All binaries, libraries, headers, etc., are under
/usr/bin
and/usr/sbin
-
The data directory is under
/var/lib/mysql
7、專案裡面配置資料庫url的時候,不要配置useSSL=true,要配置成useSSL=false
如果使用SSL,需要安裝證書,比較麻煩,開發不要用
8、pom.xml裡面驅動包應該引用如下:
<mysql.version>8.0.11</mysql.version>
9、如果專案配置裡面配置了驅動,需要使用
com.mysql.cj.jdbc.Driver
10、SpringBoot2.1.0.RELEASE版本(其他的沒試,只是記錄這個事情),只支援com.mysql.cj.jdbc.Driver驅動,即mysql6.x以上版本。
原始碼在org.springframework.boot.jdbc.DatabaseDriver類中
/**
* Find a {@link DatabaseDriver} for the given URL.
* @param url the JDBC URL
* @return the database driver or {@link #UNKNOWN} if not found
*/
public static DatabaseDriver fromJdbcUrl(String url) {
if (StringUtils.hasLength(url)) {
Assert.isTrue(url.startsWith("jdbc"), "URL must start with 'jdbc'");
String urlWithoutPrefix = url.substring("jdbc".length())
.toLowerCase(Locale.ENGLISH);
for (DatabaseDriver driver : values()) {
for (String urlPrefix : driver.getUrlPrefixes()) {
String prefix = ":" + urlPrefix + ":";
if (driver != UNKNOWN && urlWithoutPrefix.startsWith(prefix)) {
return driver;
}
}
}
}
return UNKNOWN;
}
這個類是列舉類,values()方法返回列舉成員,其中mysql或者MARIADB對應的是
/**
* MySQL.
*/
MYSQL("MySQL", "com.mysql.cj.jdbc.Driver", "com.mysql.cj.jdbc.MysqlXADataSource",
"/* ping */ SELECT 1"),
/**
* Maria DB.
*/
MARIADB("MySQL", "org.mariadb.jdbc.Driver", "org.mariadb.jdbc.MariaDbDataSource",
"SELECT 1") {
@Override
public String getId() {
return "mysql";
}
},
資料參考:
https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#apt-repo-fresh-install