遇到的問題:
問題一:ERROR 1449 (HY000): The user specified as a definer ('mysql.infoschema'@'localhost') does not exist
異常原因:未知
- 解決辦法:
驗(yàn)證指定的用戶('mysql.infoschema'@'localhost')是否存在于mysql數(shù)據(jù)庫(kù)中文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-746978.html
SELECT User FROM mysql.user WHERE User = 'mysql.infoschema' AND Host = 'localhost';
如果用戶不存在,可以使用以下命令創(chuàng)建該用戶文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-746978.html
CREATE USER 'mysql.infoschema'@'localhost';
如果用戶已經(jīng)存在,但沒有必要的權(quán)限,則可以使用grant語(yǔ)句授予所需的權(quán)限
GRANT ALL PRIVILEGES ON *.* TO 'mysql.infoschema'@'localhost';
如果SQL語(yǔ)句要求對(duì)特定表具有SELECT權(quán)限,則可以使用以下命令
GRANT SELECT ON database_name.table_name TO 'mysql.infoschema'@'localhost';
問題二:執(zhí)行CREATE USER 'mysql.infoschema'@'localhost';時(shí)出現(xiàn) ERROR 1726 (HY000): Storage engine 'MyISAM' does not support system tables. [mysql.db]
異常原因:"mysql.db"系統(tǒng)表的存儲(chǔ)引擎和mysql指定的存儲(chǔ)引擎不一致;
- 解決辦法:
查詢mysql指定的存儲(chǔ)引擎是InnoDB還是MyISAM,具體查詢方式根據(jù)自己的環(huán)境查詢,我的環(huán)境是docker-compose創(chuàng)建docker鏡像的方式部署,通過yaml文件將my.cnf文件掛載進(jìn)去,具體在my.cnf的default-storage-engine=INNODB字段;
執(zhí)行以下sql切換表的存儲(chǔ)引擎,或者在my.cnf文件里更改存儲(chǔ)引擎為你表相應(yīng)的存儲(chǔ)引擎.
切換引擎時(shí)可能會(huì)導(dǎo)致數(shù)據(jù)庫(kù)重,所以以上每個(gè)引擎請(qǐng)單獨(dú)執(zhí)行。# 查詢db表的存儲(chǔ)引擎是什么 SHOW TABLE STATUS LIKE 'db'; # 切換其他相關(guān)表的存儲(chǔ)引擎 alter table mysql.user ENGINE=InnoDB; alter table mysql.db ENGINE=InnoDB; alter table mysql.tables_priv ENGINE=InnoDB; alter table mysql.columns_priv ENGINE=InnoDB; alter table mysql.procs_priv ENGINE=InnoDB; alter table mysql.proxies_priv ENGINE=InnoDB;
問題三: 執(zhí)行完成后再次運(yùn)行"CREATE USER 'mysql.infoschema'@'localhost';"創(chuàng)建用戶時(shí),出現(xiàn)user表數(shù)據(jù)寬度不一樣的問題。
異常原因:user表切換引擎導(dǎo)致表結(jié)構(gòu)更改,無(wú)法完整創(chuàng)建用戶
- 解決辦法:
找一個(gè)干凈的相同版本的mysql,從里面將user表里的數(shù)據(jù)轉(zhuǎn)換成sql語(yǔ)句(備份),再刪除有問題數(shù)據(jù)庫(kù)的user表,執(zhí)行sql(恢復(fù)).
問題四: 執(zhí)行完成后mysql連接會(huì)斷開,報(bào)密碼錯(cuò)誤。
異常原因:由于user表時(shí)copy過來(lái)的,密碼本身是被特定算法加密的,user表中的加密后的密鑰還原回來(lái)后并不是原密碼,無(wú)法將密碼正確存儲(chǔ)與還原,導(dǎo)致密碼錯(cuò)誤。
- 解決辦法:
在my.cnf文件里面加入skip_grant_tables跳過密碼驗(yàn)證。
問題五:加入后無(wú)效或無(wú)法跳過密碼驗(yàn)證
異常原因:未知
- 解決辦法:
將原設(shè)備的mysq的data數(shù)據(jù)文件copy到另外一臺(tái)真實(shí)的設(shè)備,并且在真機(jī)原生安裝mysql,將數(shù)據(jù)庫(kù)映射到原data數(shù)據(jù),通過真機(jī)自身的命令行使用--skip_grant_tables執(zhí)行啟動(dòng),跳過密碼登陸,再將數(shù)據(jù)全量備份,重置原設(shè)備的數(shù)據(jù)庫(kù),再重新將原數(shù)據(jù)導(dǎo)回,問題解決。
到了這里,關(guān)于mysql5.0升級(jí)8.0完成后,服務(wù)器重啟引發(fā)"#1449 - The user specified as a definer ('mysql.infoschema'@'localhost') does not exist"異常小結(jié)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!