當(dāng)你在Windows系統(tǒng)中,以命令行方式,輸入 mysql 后,提示 錯(cuò)誤:
ERROR 1045 (28000): Access denied for user ‘ODBC’@‘localhost’ (using password: NO)
請(qǐng),先確認(rèn),你使用的MySQL版本,使用命令 mysql --version,注意 在 version 前 是 2 個(gè)減號(hào),
首先,聲明,我使用 的 MySQL 版本是:
mysql Ver 8.0.27 for Win64 on x86_64 (MySQL Community Server - GPL)
其他,MySQL 版本 ,能不能使用我提供的方法解決,暫時(shí)還沒(méi)有測(cè)試,
但,如果你是和我一樣的版本,用我的方法一定能解決你遇到的問(wèn)題。
接下來(lái),說(shuō)明一下,
ERROR 1045 (28000): Access denied for user ‘ODBC’@‘localhost’ (using password: NO)
問(wèn)題的原理,
這里,先將報(bào)錯(cuò)信息,逐字解釋一下,如果不感興趣,請(qǐng)?zhí)^(guò),往下看。
ERROR 1045 (28000):
給出的是,錯(cuò)誤和它的代碼,這個(gè)不重要,
Access denied for user:
訪問(wèn),拒絕了,用戶,
這里的關(guān)鍵字,是 user,用戶,
也就是說(shuō),這個(gè)錯(cuò)誤提示信息,說(shuō)明了,為什么出現(xiàn)這個(gè)錯(cuò)誤,的,根本原因,是,使用了錯(cuò)誤的用戶嘗試登錄MySQL,
(using password: NO):
這個(gè)也沒(méi)用,不用看,意思是: (使用密碼了嗎:并沒(méi)有)
‘ODBC’@‘localhost’ :
就是這個(gè) ODBC 用戶,
也就是說(shuō),當(dāng)你不指定登錄用戶時(shí),Windows 在連接 MySQL 數(shù)據(jù)庫(kù)的時(shí)候,就會(huì)使用這個(gè) ODBC 用戶去連接 MySQL 數(shù)據(jù)庫(kù),不管你的 MySQL 數(shù)據(jù)庫(kù)中是否存在這個(gè) ODBC 用戶,Windows系統(tǒng),都會(huì)使用這個(gè) ODBC 用戶去 嘗試連 MySQL 數(shù)據(jù)庫(kù),個(gè)人感覺(jué),應(yīng)該是,Windows 系統(tǒng)對(duì) ODBC 比較熟吧,畢竟 在 Windows中 有好多 ODBC 相關(guān)的接口
(開(kāi)放數(shù)據(jù)庫(kù)連接(Open Database Connectivity,ODBC))
所以,如果你不想使用 mysql -uroot -proot 這種加了兩個(gè)參數(shù)(-u、 -p)方式登錄 MySQL 數(shù)據(jù)庫(kù),就是想,直接 敲命令 mysql 就能進(jìn)入 MySQL 控制臺(tái)的話,你就需要告訴,MySQL,你不想使用 Windows 系統(tǒng)為你選的 ODBC 用戶去連 MySQL,你想使用一個(gè)你熟悉的用戶登錄 MySQL,并且,在登錄的時(shí)候,不想輸入過(guò)多的 參數(shù),只用一個(gè) mysql 命令 ,就可以登錄到 MySQL 控制臺(tái)中,
那么,如何告訴 MySQL 呢?
就需要知道,MySQL 的,運(yùn)行機(jī)理,
在 Windows 環(huán)境中,MySQL 的啟動(dòng)是去調(diào)用 你安裝到 Windows 系統(tǒng)中的 mysql 服務(wù)的,
這個(gè)服務(wù)的位置在,控制面板\所有控制面板項(xiàng)\Windows 工具\(yùn)服務(wù)(我的終端是 Windows home版)
如果,你找不到,服務(wù),就百度一下吧,
打開(kāi) 服務(wù),找到 mysql 服務(wù),這里如果,你曾多次安裝過(guò)不同版本的 MySQL 的話,可能會(huì)有其他的名稱,比如 mysql57 、mysql80 等等,反正你知道它是 mysql 就行,
右鍵點(diǎn)擊,找到的這個(gè) mysql 服務(wù),在彈出的下拉菜單中,點(diǎn)選,屬性,就能看到,mysql 的服務(wù),最終要調(diào)用的是,MySQL 安裝路徑中,bin 里的,mysqld.exe 這個(gè)應(yīng)用程序,
而,這個(gè) mysqld.exe 應(yīng)用程序,在啟動(dòng)的時(shí)候,第一時(shí)間會(huì)去找 一個(gè)文件,my.ini,
這個(gè) my.ini 文件,會(huì)告訴 mysqld 需要在啟動(dòng)的時(shí)候做些什么,
所以,我們只要配置好 my.ini 文件,就能告訴和指揮 MySQL 怎么做,也就能達(dá)到我們 只使用一個(gè)命令 mysql 就能登錄到 MySQL 的 控制臺(tái)里,而不需要 輸入 繁瑣的 各種參數(shù),
所以,問(wèn)題的關(guān)鍵,就在 這個(gè) my.ini 文件上了。
接下來(lái),就是去找到 my.ini 這個(gè)文件了,
很奇怪,我在 MySQL 官網(wǎng)上下載的這版 MySQL ,在它的安裝目錄中,沒(méi)有 my.ini 文件,
所以,通過(guò),全盤搜索,在一個(gè)目錄下,找到了這個(gè) my.ini 文件,
C:\ProgramData\MySQL\MySQL Server 8.0\my.ini可以打開(kāi)(使用記事本),可以編輯,但是保存的時(shí)候報(bào)錯(cuò),
好解決,把這個(gè) my.ini 文件從 C:\ProgramData\MySQL\MySQL Server 8.0\ 拷貝出來(lái),粘貼到 Windows 桌面,然后進(jìn)行編輯和保存,最后把這個(gè)經(jīng)過(guò)編輯和保存過(guò)的 My.ini 文件,粘貼回 原來(lái)的目錄下,
C:\ProgramData\MySQL\MySQL Server 8.0\
系統(tǒng)會(huì)提示,替換或跳過(guò)文件,點(diǎn)選,替換目標(biāo)中的文件(R),然后,點(diǎn),繼續(xù),就可以完成,繞過(guò) Windows 系統(tǒng) 權(quán)限,進(jìn)行 my.ini 文件的編輯和保存了。
但是,嘗試登錄 MySQL 仍然報(bào)錯(cuò),
編輯了 My.ini 文件,但是,沒(méi)有作用,不是因?yàn)槲覀兊睦碚撳e(cuò)誤,而是,這個(gè) my.ini 文件的位置不對(duì),
再看一眼 ,mysql 服務(wù)的,啟動(dòng)路徑,
很明顯,mysql 服務(wù) 要啟動(dòng)的是 mysqld.exe 這個(gè)應(yīng)用程序,
而這個(gè)應(yīng)用程序 mysqld.exe 就會(huì)在它所在的 MySQL 安裝路徑中 尋找 它需要的 my.ini 文件,
即:
C:\Program Files\MySQL\MySQL Server 8.0\
而我們找到 My.ini 文件 所在 的目錄是:
C:\ProgramData\MySQL\MySQL Server 8.0
顯然,我們的現(xiàn)在要做的是,將編輯好的 my.ini 文件,搬運(yùn)到 mysqld.exe 應(yīng)用程序所在的 安裝路徑中,但請(qǐng)注意不是和 mysqld.exe 應(yīng)用程序 同級(jí)的目錄下面,而是 mysqld.exe 應(yīng)用程序的父級(jí)目錄 bin 的上一級(jí)目錄中,
也就是,C:\Program Files\MySQL\MySQL Server 8.0\
查看一下,當(dāng)前用戶,是不是,我們想要的 root,
mysql> select user();
沒(méi)錯(cuò),
問(wèn)題,解決,
也不用,停止、啟動(dòng) MySQL 服務(wù),
(net stop mysql、net start mysql)
也不用 在 my.ini 中的 [mysqld]里,skip-grant-tables
按我的方法,就能解決問(wèn)題,爽不爽!
這里,補(bǔ)充一下,編輯 my.ini 文件需要更改的地方和內(nèi)容,
打開(kāi) my.ini 文件 ,找到 [mysql] (請(qǐng)注意,不是 mysqld,而是 mysql )
然后,輸入,我們想要 MySQL 使用的 登錄時(shí)的用戶賬號(hào)和密碼。
請(qǐng)注意,這里,賬號(hào),和密碼,這兩項(xiàng)都要填入,否則,還會(huì)報(bào)原來(lái)的錯(cuò)誤,
其實(shí),這個(gè)問(wèn)題困擾我有些日子了,大半年了,期間找了不少網(wǎng)絡(luò)的帖子,都是復(fù)制粘貼類型的,不解決根本問(wèn)題,就是在剛剛,在 bing 上按 錯(cuò)誤提示搜索了一下,看到一位大神的解釋,恍然大悟,對(duì),MySQL 的啟動(dòng)過(guò)程 有了新的了解和認(rèn)識(shí),于是立刻做了個(gè)實(shí)驗(yàn),很順利直接就成功了,馬上來(lái)和大家分享一下,希望能幫到大家,少走彎路,當(dāng)初確實(shí)挺煩惱的,都要砸電腦了,謝謝網(wǎng)絡(luò)上這些大神文章的指點(diǎn),保護(hù)了我的辦公終端。
把我看到那篇決定性的文章粘出來(lái),與大家共饗,文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-449879.html
January the 06th 2022 Wednesday文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-449879.html
到了這里,關(guān)于終極解決 mysql8.0 ERROR 1045 (28000): Access denied for user ‘ODBC‘@‘localhost‘ (using password: NO)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!