这几天在MySQL新建用户后。出现訪问拒绝的问题,错误码为ERROR 1045(28000)。在网上搜索了非常久。找到了非常多解决的方法,但非常遗憾的是这么多办法没有一个能解决该问题。尽管出现的错误码28000非常多人都遇到过。但原因也有所不同。有的是mysql.user表中没有信息。有的是root用户没有password(那就不用password登录),而使用mysql-5.6.19时,mysql.user实用户信息,root用户没有password。採用的方法是root用户登录时输入空password,登录成功。

使用root用户创建測试用test,password为test。语句例如以下:

grant all onlogdb.* to test identified by ‘test’;

在命令行输入mysql  -u test –p,输入passwordtest,出现以下的错误信息,具体该错误信息非常多人在使用MySQL时都遇到过。

ERROR 1045 (28000):Access denied for user 'test'@'localhost' (using password: YES)

解决方法是用root用户再创建用户test,passwordtest,唯一不同的是指定test登录的主机为localhost,例如以下:

grant all onlogdb.* to test@'localhost' identified by 'test';

再次使用test用户登录MySQL,成功。例如以下所看到的:

使用root用户登录MySQL。查看user表中的用户信息例如以下。能够发现存在两个test用户。host的字段分别为%和localhost。就是前面创建的两个用户。

在MySQL中%表示能够在不论什么主机上登录MySQL数据库,那为什么还须要明白创建登录主机为localhost的用户呢?这涉及到MySQL安装时的初始化用户,匿名用户以及连接验证策略等,以下进行深入的分析。

在安装MySQL时,会默认初始化一些用户,比方root用户,以及host字段为localhost,user字段为空的用户。

User字段为空的用户即为匿名用户。该用户的password也为空,不论什么人都能够使用匿名用户登录MySQL数据库,但能够做的事情却是有限的。比方在命令行直接输入mysql登录,能够查看匿名用户对哪些数据库有权限:

\

通过上面的图片能够发现,匿名用户仅对information_schema和test数据库有权限。而匿名用户又是怎样影响其它用户登录。进而出现28000错误的呢?当试图连接MySQL数据库时,数据库依据提供的身份和password决定是否接受连接请求,身份由两部分组成:username和client主机(即输入mysql命令的主机)。

因为host字段中的%匹配不论什么主机或者host字段包括通配符。就可能出现多个匹配行。server必须决定匹配哪一个,解决方式例如以下:

server将user表中的数据读入内存中,依照host和user字段对行进行排序。

当client试图连接时,server查找已排序的行并使用第一个匹配client主机和username的行,user字段为空表示能够匹配不论什么用户。

找到匹配行后,在验证password是否一致,假设一致则登录成功。

依据上面描写叙述的规则。通过演示样例来演示为什么必需要创建test@localhost用户,才干在本地登录成功。对user表进行排序的结果例如以下图所看到的:

当未创建test@localhost时,该表不包括第一行的记录。用户test登录时。则会匹配到第四行的记录:host为localhost,user为空,由于user为空能够匹配不论什么用户,再去验证password不成功登录失败。或者不使用password登录。还是匹配到第四行,但验证password成功,然而匿名用户仅仅对information_schema和test数据库有权限,使用其他数据库时也会失败。例如以下所看到的:

总结一下,当出现28000错误时。首先查看user中是否有数据,是否存在匿名用户。若存在匿名用户则创建userName@localhost,或者也能够删除匿名用户。

深入分析MySQL ERROR 1045 (28000)的更多相关文章

  1. 关于mysql登录异常处理方法 - mysql ERROR 1045 (28000)

    今天在开发过程中遇到了一个很令人头痛的问题?? 使用 百度经验的步骤 [http://jingyan.baidu.com/article/495ba841ef412d38b30edeb2.html]修 ...

  2. Mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost'(using password: YSE)

    安装mysql后,使用命令登录mysql居然报错了,Mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost'(using ...

  3. 【技术贴】解决Mysql ERROR 1045 (28000): Access denied for

    今天Mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost' 肯定是密码不对了.那么重置一下密码吧. 打开 cmd 输入以 ...

  4. MySQL ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO

    MySQL安装完server端和客户端后,登录Mysql时报错:[root@rhel204 MySQL 5.6.23-RMP]# mysqlERROR 2002 (HY000): Can't conn ...

  5. MySQL ERROR 1045 (28000)

    mysql ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: YES) 到配置文件my.in ...

  6. MYSQL ERROR 1045 (28000) Access denied for user (using password YES)问题的解决

    我的Linux是Centos6.7的版本,本机上Mysql突然怎么连接都进不去 报错:MYSQL ERROR 1045 (28000) Access denied for user (using pa ...

  7. 解决MYSQL ERROR 1045 (28000)问题

    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)   Red Hat Enterpr ...

  8. MySQL ERROR 1045 (28000): Access denied for user 'root'@'localhost'解决

    MySQL ERROR 1045 (28000): Access denied for user 'root'@'localhost'解决: # /etc/init.d/mysql stop # my ...

  9. MySql ERROR 1045 (28000): Access denied 错误

    [MySql ERROR 1045 (28000): Access denied 错误] 即登陆错误,使用MySql登陆时,需使正确的username/passwd.通过 -u -p 参数即可. My ...

随机推荐

  1. SGU 242. Student's Morning( 网络流 )

    看英文题真是麻烦...理解题意花的时间比想的时间还长...裸的网络流, 我们只要限制每个人出发流量为1, 每个大学进入的流量至多为2即可, 相当于构造可行解. -------------------- ...

  2. 根据不同需求跳转不同Activity的另外一种写法

    代码如下: /* Android Asynchronous Http Client Sample Copyright (c) 2014 Marek Sebera <marek.sebera@gm ...

  3. 电脑硬件扫盲--CPU 显卡

    CPU: 主要2个厂商 Inter:core(酷睿) > pentinum(奔腾) > celeron(赛扬) AMD:athlon(速龙) > semporn(闪龙) 主频(GHz ...

  4. springmvc定时器

    用到的jar包: aopalliance-1.0.jar commons-logging-1.1.3.jar spring-aop-3.2.4.RELEASE.jar spring-beans-3.2 ...

  5. 深信服模式(先做减法,必须拜访客户三次、研究需求方向,把产品的问题控制住,快速反应,在未来十年,绝大部分业务都会搬到Internet上来,实现All on Internet)good

    深圳市盛凯信息科技有限公司与深信服合作多年,可以说是看着深信服“飞速”长大的.盛凯的总经理邓渊在采访中笑言:“他们(深信服)发展得太快,而我们发展得太慢.” 深信服的产品线已从最初只有VPN一条,到目 ...

  6. javascript集合求交集

    两集合求交集 思路: 1. 每一次从B数组中取一值,然后在A数组里逐个比较,如果有相等的,则保存.该算法复杂度为 O(MN). M, N 分别为数组 A B 的长度. 2. 因为A B 都排过序,所以 ...

  7. POJ 3581 Sequence(后缀数组)

    [题目链接] http://poj.org/problem?id=3581 [题目大意] 给出一个数列,将这个数列分成三段,每段分别翻转,使得其字典序最小,输出翻转后的数列. [题解] 首先,第一个翻 ...

  8. AppStore被拒原因及总结

    4.5 - Apps using background location services must provide a reason that clarifies the purpose of th ...

  9. UVA - 699The Falling Leaves(递归先序二叉树)

    The Falling Leaves Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Sub ...

  10. 2015腾讯暑期实习生 Web前端开发 面试经历 --作者imwtr

    1.现在有100亿个数字大小为1到10亿的数字,在这100亿个数字里边只有一个数字出现的次数是奇数次的,你用什么方法,找出这个数字呢? 答:显然至少要全部过一遍,可以用位运算,遍历数组,最后剩下的数字 ...