您好,登錄后才能下訂單哦!
小編這次要給大家分享的是如何解決MySQL 5.7.30安裝與升級問題,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。
楔子
由于之前電腦上安裝的MySQL版本是比較老的了,大概是5.1的版本,不支持JSON字段功能。而最新開發部門開發的的編輯器產品,使用到了JSON字段的功能。 因此需要升級MySQL版本,升級的目標版本是MySQL 5.7.30(雖然最新版本已經到8.x,但是5.7基本夠用了)。 發現在升級安裝過程中,會有一些坑,所以使用本文記錄一下。
卸載老版本
首先需要卸載老的版本,卸載其實也挺簡單,只需要移除MySQL服務即可,首先打開CMD,然后cd到MySQL的bin目錄,然后輸入下面的命令移除MySQL服務:
mysqld --remove mysql
//需要注意的是: “msyql” 是服務名稱,安裝的時候如果沒有指定服務名稱,
//默認名稱是MySQL(windows下不區分大小寫);
// 如果安裝的時候指定了名稱,上面的名稱需要修改為該指定的名稱。
需要注意的一點是,我們刪除了MySQL服務之后,有可能在windows的服務的列表里面還有,保留在哪兒也沒啥影響,但是如果你又潔癖,一定要刪除,就需要去刪除注冊表中對應鍵,參考下圖。當然對于我們升級來說,后續還需要安裝windows服務,可以直接覆蓋。
注冊表的圖
然后刪除老的MySQL相關文件夾,以及刪除相關的環境變量的配置。
需要注意的是,如果數據文件和MySQL程序在一個文件夾下,需要保留數據
安裝5.7.30版本
接下來就是安裝5.7.30版本,第一步是下載。
下載MySQL
下載地址是:https://dev.mysql.com/downloads/mysql/
點擊上面鏈接,進入到下載頁面,由于最新的版本是8.x,所以默認是8.x的版本。可以通過點擊“Looking for the latest GA
version ”選擇版本,然后下載免安裝版本:
解壓MySQL
下載完成后,解壓到你想要安裝的目錄,比如我的目錄是:
D:\Program Files (x86)\mysql-5.7.30-winx64
配置環境變量
在系統變量path后面追加D:\Program Files (x86)\mysql-5.7.30-winx64\bin,如圖所示。
創建配置文件my.ini
5.7.30版本的安裝包默認是不帶配置文件my.ini的。所以需要創建自己創建一個my.ini的文件。手動創建my.ini文件,然后輸入如下內容:
[mysql] # 設置mysql客戶端默認字符集 default-character-set=utf8 [mysqld] # 設置3306端口 port = 3306 # 設置mysql安裝目錄 basedir=D:\Program Files (x86)\mysql-5.7.30-winx64 # 設置mysql數據庫的數據存放目錄 datadir=D:\Program Files (x86)\mysql-5.7.30-winx64\data # 運行最大連接數 max_connections=200 # 服務端使用的字符集默認為8比特編碼的latin1字符集 character-set-server=utf8 # 參加新表時將使用的默認存儲引擎 default-storage-engine=INNODB
此處會有一些坑,需要避免。
my.ini注意事項一
my.ini必須保存為ANSI格式(配置文件默認就是是ANSI編碼格式,可能會不小心保存為其他格式,比如UTF-8),否正會出現后續的服務不能啟動的情況。 如果你不確定my.ini是什么格式,可以另存為:
my.ini注意事項二
如果是從低版本升級到5.7的版本,可能為了保留之前的配置,就直接把之前的配置文件拷貝過來。這個時候就要注意了,因為以前很多低版本的參數,已經不適合高版本的。如果不修改過來,就會導致后續的服務啟動失敗。
比如筆者遇到的一個導致錯誤的參數是:
#table_cache=256 // 低版本的 table_open_cache=256 // 高版本的
如果一定要保留老版本的配置,又對于新版本的參數修改不是很熟悉,那么可以再配置文件中把日志功能假設,這樣再報錯的時候,可以通過查看日志了解詳情。 如下配置日志路徑即可:
log_error=D:/mysql-5.7/error.log
然后啟動失敗后,可以通過日志查看報錯,比如:
更多可能的錯誤參數:
unknown variable 'key-buffer=256M' //去掉改項即可。
unknown variable 'table-cache=512' //修改為table_open_cache即可。
unknown variable 'thread-concurrency=8' //去掉改項,5.7已結廢棄。
windows 服務啟動失敗,不會把錯誤詳情標識出來,只會簡單說一句服務啟動失敗。 只能通過配置日志文件來查看。
安裝MySQL服務
最重要的一步就是安裝MySQL服務。 首先進入cmd界面,CD到MySQL的bin目錄(注意此處一定要到bin目錄下去執行),執行如下命令:
mysqld --install [服務名稱,默認是MySQL]
截圖如下:
執行命令后,會提示服務安裝成功。
注意事項一
需要注意的是,有可能出現Install/Remove of the Service Denied! 的提示錯誤。
原因:普通用戶模式權限下的cmd安裝mysql會出現這樣的報錯提示。通過管理員模式運行cmd即可:
其他步驟如果出現沒有執行權限的情況,也都請用管理員省份運行即可。
注意事項二
有些電腦會出現找不到MSVCP120.dll的錯誤:
這種錯誤是由于未安裝 vcredist 引起的
下載 vcredist 地址:https://www.microsoft.com/zh-CN/download/details.aspx?id=40784
安裝,位置默認即可,安裝成功之后,重新安裝服務即可。
初始化MySQL
MySQL5.7是不帶data目錄的,所以需要初始化MySQL,生產data目錄,也比較簡單,執行如下命令即可:
mysqld --initialize-insecure --user=mysql
需要注意的是,有的文章介紹的是此處用 “mysqld --initialize”, “mysqld --initialize-insecure”和 “mysqld --initialize”的區別在于前者會創建一個空密碼,而后者會創建一個隨機密碼。 因此用 “mysqld --initialize”,最好加上 “–console”,可以把隨機密碼打印出來(注意 “–console”僅限于windows)
–user=msyql 主要用于在linux或者unix系統下給與把data目錄授權給mysql賬號,在windows 下可以不必使用,帶上也無所謂。
數據初始化參考鏈接:https://dev.mysql.com/doc/mysql-installation-excerpt/5.7/en/data-directory-initialization.html
初始化完成后,會生成data目錄。
注意事項一
如果初始化出現錯誤:“–initialize specified but the data directory has files in it. Aborting. ” 那是因為你可能手動創建了data目錄,并且里面包含了文件(比如升級可能這樣操作),此時要做的就是刪除data目錄即可,至于升級,可以后續考慮。
此時說的data目錄,是指 my.ini文件里面 指定的目錄 ,未必是mysql安裝文件下的目錄:
datadir=D:\Develop\MySQL\mysql-8.0.12-winx64\data
啟動MySQL服務
windows下啟動MySQL服務,可以使用如下命令即可:
net start MySQL
設置MySQL服務密碼
使用mysqladmin可以設置密碼。啟動MySQL服務之后,輸入如下命令:
輸入老的密碼(通過前面操作,老密碼為空),然后輸入新的密碼,確認新的密碼,即可設置成功。
注意事項一
如果前面初始化的時候未初始化未空密碼,又不小心忘記了初始化密碼,會出現下面的問題,無法登陸及修改密碼:
“Access denied for user ‘root'@‘localhost'”
通過如下步驟解決:
添加skip-grant-tables
再配置文件my.ini中添加skip-grant-tables:
重啟MySQL服務
先停止MySQL服務,然后再啟動MySQL服務,即可:
修改密碼
首先登陸mysql,此時不需要密碼,如下:
通過sql語句修改密碼,首先 use mysql ;然后update 更新密碼:
然后退出mysql即可。
刪除skip-grant-tables 重啟MySQL服務
首先從my.ini中刪除skip-grant-tables ,然后 net stop mysql, net start mysql 重啟服務。
MySQL老數據升級到5.7
要升級老數據,如果是從5.x版本升級上來,基本上只需要把相關的數據文件拷貝到data文件夾下。需要注意的是,如果使用了 innodb,還需要把“ibdata”等文件拷貝過來。 否正會報表不存在的情況:
error: 1146: Table 'a_content' doesn't exist
innodb是MYSQL數據庫一種流行的數據庫引擎,支持事務(行級),ibdata用來儲存文件的數據,而庫名的文件夾里面的那些表文件只是結構而已,由于新版的mysql默認試innodb,所以ibdata1文件默認就存在了,少了這個文件有的數據表就會出錯。
如果升級過程中,存在數據損壞,可以使用repair命令進行修復:
repair table tablename
正常經過上述操作,就可以了,如果還有問題,可以嘗試使用升級命令mysql_upgrade對數據進行升級(也建議使用改命令升級,不然后續出問題,可能會不好定位)
https://dev.mysql.com/doc/refman/5.7/en/mysql-upgrade.html
//升級mysql,mysql_upgrade檢查不兼容的表,更新grant表; mysql_upgrade -uroot -p
升級速度具體看data目錄的大小情況而定。
看完這篇關于如何解決MySQL 5.7.30安裝與升級問題的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。