深入分析MySQL ERROR 1045 (28000)
这几天在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)的更多相关文章
- 关于mysql登录异常处理方法 - mysql ERROR 1045 (28000)
今天在开发过程中遇到了一个很令人头痛的问题?? 使用 百度经验的步骤 [http://jingyan.baidu.com/article/495ba841ef412d38b30edeb2.html]修 ...
- 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 ...
- 【技术贴】解决Mysql ERROR 1045 (28000): Access denied for
今天Mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost' 肯定是密码不对了.那么重置一下密码吧. 打开 cmd 输入以 ...
- 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 ...
- MySQL ERROR 1045 (28000)
mysql ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: YES) 到配置文件my.in ...
- 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 ...
- 解决MYSQL ERROR 1045 (28000)问题
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) Red Hat Enterpr ...
- 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 ...
- MySql ERROR 1045 (28000): Access denied 错误
[MySql ERROR 1045 (28000): Access denied 错误] 即登陆错误,使用MySql登陆时,需使正确的username/passwd.通过 -u -p 参数即可. My ...
随机推荐
- uva 10779 Collectors Problem 网络流
链接 一共有n个人, m种收藏品, 每个人拥有的收藏品的种类和个数都是不相同的. 假设2-n这些人都只和1互相交换, 比例是1:1, 并且, 2-n这些人, 只换自己现在没有的, 如果他现在有第二种, ...
- 【转】CentOS 使用yum命令安装出现错误提示”could not retrieve mirrorlist http://mirrorlist.centos.org ***”
源自:http://www.cnblogs.com/yangbingqi/p/3328610.html 刚安装完CentOS,使用yum命令安装一些常用的软件,使用如下命令:yum grouplist ...
- The basic introduction to MIX language and machine
reference: The MIX Computer, The MIX Introduction sets, The basic info storage unit in MIX computer ...
- UPPH、UPH
UPPH=units Per Hour Per Person,单位小时人均产能,是公司作为衡量员工工作绩效的重要指标. UPPH是衡量员工单位时间工作量的一种绩效指标. UPPH计算方式如下: UPP ...
- HDU 5893 List wants to travel(树链剖分)
[题目链接]http://acm.hdu.edu.cn/showproblem.php?pid=5893 [题目大意] 给出一棵树,每条边上都有一个边权,现在有两个操作,操作一要求将x到y路径上所有边 ...
- sql的强大功能(看一条sql解决的复杂业务)
一条sql语句解决的复杂业务,请往下看: 业务介绍:一个单位有多个立项(立项信息表里有单位id),每个立项可能被预警多次(预警信息表里的uuid字段的值里包含有立项id或单位id),每 ...
- OpenVPN多处理之-多队列TUN多线程
1.有一点不正确劲 在改动了那个TUN驱动后,我在想,为何我总是对一些驱动程序进行修修补补而从来不从应用程序找解决方式呢?我改动了那个TUN驱动,可是能保证我的改动对别的应用一样可用吗?难道TUN驱动 ...
- C++学习笔记29,引用变量(1)
引用变量在创建的时候就必须初始化.无法创建一个未被初始化的引用. #include <iostream> using namespace std; int main() { int x=1 ...
- Migration data on SQL
从表里面导出数据XML: -- export declare @xml xml set @xml = (select * from ( select TableName = 'Schema', xml ...
- HTML标记语言和CSS样式的简单运用(Nineteenth Day)
曾经励志下去要坚持把每天所学的知识记录下来,可是坚持了几天后,就觉得自己坚持不下去了....这几天自己好好的想了想,觉得不能坚持也得要坚持,因为要对自己负责,所以得学会逼着自己去做,只有这样才能把一件 ...