深入分析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 ...
随机推荐
- hadoop搭建杂记:Linux下hadoop的安装配置
VirtualBox搭建伪分布式模式:hadoop的下载与配置 VirtualBox搭建伪分布式模式:hadoop的下载与配置 由于个人机子略渣,无法部署XWindow环境,直接用的Shell来操作, ...
- 如何创建一个简单的struts2程序
如何创建一个简单的Struts2程序 “计应134(实验班) 凌豪” 1.创建一个新的Web项目test(File->new->Web Project) 2.Struts2框架的核心配置文 ...
- DGIM
http://blog.liulixiang.info/2011/04/05/dgim%E7%AE%97%E6%B3%95%EF%BC%9A%E4%BC%B0%E8%AE%A1%E6%BB%91%E5 ...
- 关注SSO
https://wiki.jasig.org/display/CASC/Configuring+the+Jasig+CAS+Client+for+Java+in+the+web.xml 其余的看osc ...
- Linux进程间通信总结
刚请完婚假,请假期间做了些技术总结,其中一个就是Linux进程间通信方式的总结. Linux提供了多种进程间通信的方式,列举如下: PIPE(管道) FIFO(先进先出,也称为有名管道) domain ...
- Node.js初学
Node.js 初学~ 其技术上最大的卖点是非阻塞的I/O和基于事件的异步处理机制. 后端没有什么深入研究,一直对其不是很了解. 透过一个例子看 非阻塞 与 通常的 阻塞 var text = rea ...
- HTML5API___geolocation
地理位置查询:geolocation window.navigator.geolocation 该对象下总共有3个方法 Geolocation {getCurrentPosition: functio ...
- webservice主流框架Axis、Axis2、XFire、CXF的比较
http://ws.apache.org/axis/ http://axis.apache.org/axis2/java/core/ http://xfire.codehaus.org/ http:/ ...
- Linux字符界面和图形界面
Ubuntu图形界面和字符界面的切换 Ubuntu和其他的Linux系统一样,有图形界面和字符界面,同时能够设置默认的启动界面. linux的显示界面分为命令行的字符界面和图形界面,我们可以设置lin ...
- JS数组方法总结
数组的常用方法总结 不改变原数组 1.Array.length; //获取数组长度 2.Array.join(); ...