1.错误信息:
提示:在 Linux 系统中登录 mysql 时和进入到 mysql 遇到异常信息。
报:Mysql 1064错误代码:Access denied for user ''@'localhost' 错误。
问题描述
提示:执行以下操作报同样的异常。
例如:使用密码无法登录(免密登录),免密登录后又无法修改密码、在创建数据库时都报同样的异常。在使用show databses
进行数据库查询时,只能显示 test
和information_schema
两个数据库,mysql
和其它数据库都没有显示。
原因分析:
例如:由
localhost
和hadoop1
映射到一个为空的用户名,导致的异常信息 。
解决方案:
免密登录
mysql
(异常原因,密码无法登录);选择
mysql
数据库,删除user
表中的所谓的空用户名。
关闭
mysql
服务。
service mysql stop
在
mysql
安装的目录中找到 my.cnf 文件在文件末尾添加上skip-grant-tables
用来跳过密码验证。
文件目录(注:在 Linux 的远程软件中比较好找到该文件)。
![]()
文件末尾添加内容:
skip-grant-tables
![]()
重启
mysql
服务。
service mysql restart
![]()
进行
mysql
免密登录,(注:看图操作)。
mysql -u root -p
![]()
此时执行
show databases
就能将所有数据库查询出来。
![]()
选择
mysql
数据库。
输入:
use mysql
![]()
查看
mysql
数据库中的信息,并且可以看到为空的用户名。
select user,host from user;
![]()
删除掉
用户名为空
的就能解决以上问题了。删除
为空用户名
。
delete user from user where user='';
![]()
删除为空用户后。
退出
mysql
。
退出:
quit
删除
my.cnf
文件中的skip-grant-tables
;再进行重新登录即可,并修改密码!!!