本文的初衷僅供自己做備忘筆記, 內(nèi)容大多從網(wǎng)上搜集和整理, 并非都是自己原創(chuàng).
參考的來源我會(huì)在后面注明, 對(duì)于可能遺漏的來源, 還請(qǐng)相關(guān)原創(chuàng)作者提醒, 非常感謝.
參考來源:
https://blog.csdn.net/yin138/article/details/80293533
https://mariadb.com/kb/en/library/authentication-plugin-unix-socket/
https://dev.mysql.com/doc/refman/5.6/en/pluggable-authentication.html
環(huán)境&版本
- MairaDB 10.1.43
- Ubuntu 18.04
給新機(jī)器Ubuntu安裝的Mariadb后無法登錄,表現(xiàn)為:
- 非系統(tǒng)root賬戶下, 怎么也無法進(jìn)入mysql(也可以是mariadb, 一樣的), 即便密碼是對(duì)的, 允許localhost連接, 也提示
Access denied for user 'root'@'localhost' - 系統(tǒng)root賬號(hào)下, 連密碼都不用, 直接就可以進(jìn)入mysql
- 各種方法修改root用戶密碼,無效
這里再次感謝參考來源里csdn的這位博主, 解決了困擾我2天的問題.
經(jīng)過看日志和查手冊,發(fā)現(xiàn)原因如下:
1. ubuntu確實(shí)安裝沒有啟用root用戶,所以沒有root用戶密碼,而新安裝的mariadb使用的系統(tǒng)root的密碼(初始安裝后)
2. 通過原來的方法重置password無效(原因就是采用了unix_socket認(rèn)證)
解決方法
直接進(jìn)入root用戶下,就可以免密碼登錄!
對(duì)于ubuntu而言,需要啟用root用戶密碼,方法如下:
sudo passwd
輸入sudo的密碼后,再次輸入兩次root用戶密碼后即可。
然后切換至root賬號(hào):
xx>su - root
root>mysql -u root //直接回車就可以進(jìn)入,無需密碼,無論什么密碼也行,因?yàn)樗恍枰?mysql>
如果,你希望采用原來的mysql密碼方式,需要修改認(rèn)證插件,方法如下:
update mysql.user set plugin='mysql_native_password' where user='root';
update mysql.user set password=password("您的密碼") where user='root';
FLUSH PRIVILEGES;
這樣就可以在任何用戶下訪問mysql了。
為啥要升級(jí)成缺省為unix_socket呢?
對(duì)于CentOS,RedHat而言,使用root用戶時(shí),無需密碼登錄。
而且,也符合安全準(zhǔn)則,新版本的MySQL密碼會(huì)在日志中輸出,MariaDB以前保持空密碼,現(xiàn)在意味著,用root用戶,無需登錄。