MariaDB安装后无法登录问题的解决

本文的初衷仅供自己做备忘笔记, 内容大多从网上搜集和整理, 并非都是自己原创.
参考的来源我会在后面注明, 对于可能遗漏的来源, 还请相关原创作者提醒, 非常感谢.

参考来源:
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

环境&版本

  • MairaDB 10.1.43
  • Ubuntu 18.04

给新机器Ubuntu安装的Mariadb后无法登录,表现为:

  • 非系统root账户下, 怎么也无法进入mysql(也可以是mariadb, 一样的), 即便密码是对的, 允许localhost连接, 也提示Access denied for user 'root'@'localhost'
  • 系统root账号下, 连密码都不用, 直接就可以进入mysql
  • 各种方法修改root用户密码,无效

这里再次感谢参考来源里csdn的这位博主, 解决了困扰我2天的问题.

经过看日志和查手册,发现原因如下:
1. ubuntu确实安装没有启用root用户,所以没有root用户密码,而新安装的mariadb使用的系统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以前保持空密码,现在意味着,用root用户,无需登录。

你可能感兴趣的:(MariaDB安装后无法登录问题的解决)