Centos7 mysql error: mysql [Warning] Using a password on the command line interface can be insecure.

mysql [Warning] Using a password on the command line interface can be insecure. ERROR 1045 (28000) Access denied for user ‘root’@‘localhost’ (using password YES)

在这里插入图片描述

	翻译:mysql[警告]在命令行界面上使用密码是不安全的。
	用户'root'@'localhost'访问被拒绝(使用密码YES),错误1045 (28000)

满心欢喜地安装完mysql之后,一顿操作猛如虎,重启mysql之后再登陆发现,出!错!!了!!!
很慌张是不是?想重装了是不是?重装之后再操作再重启还是报错是不是?那再重装再操作,再报错再重装……这显然是不明智的 ,我们需要明白问题的关键是出在哪里。

从字面上看我们知道,我们的root密码是没有错的(不排除你的密码真的是错的,但没关系往下看),而是登陆访问时被“拒绝了”,拒绝它还给出了一个说明原因,就是:

	用户root通过名为localhost的主机来访问mysql被mysql服务给拒绝了;
看来问题是出在mysql身上对不对?

是的,问题是出在mysql身上,再精确一点来说就是mysql中的mysql数据库下的user表的问题,我们只需要改一些参数就可以解决这个问题,这个时候有些朋友该说了,那我虽然知道问题的源头,但是我进不去mysql又该当如何呢?别急,能进去的,我们一起来操作:

首先,我们先sudo vim /etc/my.cnf ,添加:skip-grant-tables

在这里插入图片描述

然后我们重启mysql:sudo service mysqld restart

在这里插入图片描述

输入 :mysql -uroot 就能直接进入mysql,
输入:show databases;

在这里插入图片描述

输入:use mysql;

在这里插入图片描述

这时候,我们查看一下数据列表,输入:show tables;

在这里插入图片描述

看到user表了吧?我们查看一下表内容:select * from user;

在这里插入图片描述

看到host 为localhost,用户名为root的这一行数据有很多’N’了吧?
没错,把这些’N’改成’Y’就好了,但是要注意,有个属性为’password_expired’,还是要保持为’N’的。

当你发现这样查看数据不是很直观(确实有些乱),用命令行改起来不方便,那么我提供一种很方便的办法,就是用navicat远程连接,然后在那里直接改:
在这里插入图片描述
假如你使用navicat远程连接数据库报错:2003-can’t connect to MySQL server on ‘192.168..’(100060"Unknown error)
在这里插入图片描述
请参考我的另一篇博文操作https://blog.csdn.net/Jack_Roy/article/details/86186272,直至连接成功以后,再改这些属性值;

这一切完成后,不要忘记去注销/etc/my.cnf里的skip-grant-tables

在这里插入图片描述

随后重启mysql:sudo service mysqld restart
输入:mysql -uroot -p********

在这里插入图片描述
成功了是不是!当然,有一种现象就是可能是之前的操作会导致目前的root密码失效,这时候你试试以前的root密码,一样能登陆进去(也就是说root密码会回滚回上一回的状态,当前的root密码不能进入mysql,输入之前的root密码则能进去(我猜是因为改了很多个’N’导致哪个不该改的被改了,我们知道有这种情况就好了))。

发布了31 篇原创文章 · 获赞 21 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Jack_Roy/article/details/87858801
今日推荐