首先提醒大家,拷貝data文件夾有風險!數據無價,建議還是dump數據再restore!
舊版本是5.7,到官網 https://dev.mysql.com/downloads/ 下載8的dmg包,安裝(在版本8的安裝過程中需要設置root賬戶的密碼,注意記錄好!)。
以dmg包方式安裝的mysql,根目錄在/usr/local下面,可以看到一個“mysql”的替身,指向實際的mysql安裝目錄,如果之前安裝有舊版本,升級之後可以見到兩個目錄,
8的安裝過程中,會刪除5.7的舊文件,所以5.7的那個裏面已經只剩一個data目錄了,此時的數據目錄是8.0.12文件夾中的data。
安裝完成後,進入/usr/local/mysql/support-files/
啓動服務:sudo mysql.server start
試着登陸root:mysql -h 127.0.0.1 -u root -p (注意,這會兒輸入的密碼是在安裝8.0.12時自己設置的那個,別搞錯了)。
使用workbench登陸也是可以的,但是,原來的數據庫全部沒有了。
網上查,是可以通過配置文件指定data目錄位置,但是覺得以後容易搞亂。所以嘗試直接copy數據文件。
首先停止服務:
進入/usr/local/mysql/support-files/ 之後 sudo mysql.server stop
備份8.0.12的data文件夾(如果失敗了能恢復),之後刪掉其中內容,再把5.7的data內容全部拷過來。
再次啓動服務 sudo mysql.server start,用shell的方式可以登錄root。但是workbench會報錯:('mysql.infoschema'@'localhost') does not exist
關鍵一步:shell執行:mysql_upgrade -u root -p
輸入密碼後,如圖:
之後可以成功登陸了,而且以前的數據庫都在: