1. 程式人生 > >MySQL8環境搭建採坑記錄

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