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

报错描述

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

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)

解决步骤

从字面上看我们知道,我们的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 :

mysql -uroot   

查看一下数据库:

show databases;

在这里插入图片描述
查看mysql库表明细:

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)
在这里插入图片描述
请参考我的另一篇博文mysql远程连接被拒绝,报错:2003-can’t connect to MySQL server on ‘192.168..’(100060"Unknown error),直至连接成功以后,再改这些属性值;
这一切完成后,不要忘记去注销/etc/my.cnf里的skip-grant-tables
在这里插入图片描述
随后重启mysql:

sudo service mysqld restart 

验证

使用原密码登录:

mysql -uroot -p********

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

Logo

更多推荐