本文的初衷僅供自己做備忘筆記, 內(nèi)容大多從網(wǎng)上搜集和整理, 并非都是自己原創(chuà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
給新機器Ubuntu安裝的Mariadb后無法登錄瓜挽,表現(xiàn)為:
- 非系統(tǒng)root賬戶下, 怎么也無法進入mysql(也可以是mariadb, 一樣的), 即便密碼是對的, 允許localhost連接, 也提示
Access denied for user 'root'@'localhost'
- 系統(tǒng)root賬號下, 連密碼都不用, 直接就可以進入mysql
- 各種方法修改root用戶密碼惠爽,無效
這里再次感謝參考來源里csdn的這位博主, 解決了困擾我2天的問題.
經(jīng)過看日志和查手冊波附,發(fā)現(xiàn)原因如下:
1. ubuntu確實安裝沒有啟用root用戶佛析,所以沒有root用戶密碼,而新安裝的mariadb使用的系統(tǒng)root的密碼(初始安裝后)
2. 通過原來的方法重置password無效(原因就是采用了unix_socket認證)
解決方法
直接進入root用戶下狈醉,就可以免密碼登錄喝峦!
對于ubuntu而言,需要啟用root用戶密碼剑梳,方法如下:
sudo passwd
輸入sudo的密碼后唆貌,再次輸入兩次root用戶密碼后即可。
然后切換至root賬號:
xx>su - root
root>mysql -u root //直接回車就可以進入垢乙,無需密碼锨咙,無論什么密碼也行,因為他不需要追逮!
mysql>
如果酪刀,你希望采用原來的mysql密碼方式,需要修改認證插件钮孵,方法如下:
update mysql.user set plugin='mysql_native_password' where user='root';
update mysql.user set password=password("您的密碼") where user='root';
FLUSH PRIVILEGES;
這樣就可以在任何用戶下訪問mysql了骂倘。
為啥要升級成缺省為unix_socket呢?
對于CentOS巴席,RedHat而言历涝,使用root用戶時,無需密碼登錄漾唉。
而且荧库,也符合安全準則,新版本的MySQL密碼會在日志中輸出赵刑,MariaDB以前保持空密碼分衫,現(xiàn)在意味著,用root用戶般此,無需登錄蚪战。