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

原创 2016年10月12日 23:31:25

问题:ERROR 1045 (28000): Access denied for user ‘myuser’@’localhost’ (using password: YES)

我的mysql里的信息:

MariaDB [(none)]> select Host, User, Password from mysql.user;

| Host         | User       | Password   |
|--------------|------------|------------|
| localhost    | root       | myrootpass |
| myhost       | root       | myrootpass |
| 127.0.0.1    | root       |            |
| ::1          | root       |            |
| localhost    |            |            |
| myhost       |            |            |
| %            | myauser    |            |
| %            | myuser     | mypass     |
| localhost    | anotheruser| mypass     |
10 rows in set (0.00 sec)

% 在这里是允许此用户名在任何主机访问 mysql

在网络中的其它机器使用密码myuser远程访问mysql ,成功访问。在服务器本地用密码访问的时候,出现错误:

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

在本地不使用密码的时候,可以成功访问,但是查看当前用户:

MariaDB [(none)]> SELECT CURRENT_USER();
+----------------+
| CURRENT_USER() |
+----------------+
| @localhost     |
+----------------+
1 row in set (0.00 sec)

这是因为mysql在对mysql.user表进行匹配之前,先在内存进行排序,主机优先匹配,上面 localhost 优先 % 匹配,所以服务器上不用密码被匹配到''@localhost

When multiple matches are possible, the server must determine which of them to use. It resolves this issue as follows:

Whenever the server reads the user table into memory, it sorts the rows.
When a client attempts to connect, the server looks through the rows in sorted order.
The server uses the first row that matches the client host name and user name.
The server uses sorting rules that order rows with the most-specific Host values first. Literal host names and IP addresses are the most specific.

排序详情:
示例1:

+-----------+----------+-
| Host      | User     | ...
+-----------+----------+-
| %         | root     | ...
| %         | jeffrey  | ...
| localhost | root     | ...
| localhost |          | ...
+-----------+----------+-

排序后:

+-----------+----------+-
| Host      | User     | ...
+-----------+----------+-
| localhost | root     | ...
| localhost |          | ...
| %         | jeffrey  | ...
| %         | root     | ...
+-----------+----------+-

localhost 发出的连接,两项被匹配到:'localhost''''%''jeffrey'。 前者被优先使用,也即按前者进行连接。当我通过localhost myuser mypass 连接时被匹配到 密码为空的匿名用户 localhost '',所以会报错,而在远程访问的时候是直接用ip访问就可以正确匹配到myip myuser mypass 所在项,成功访问。

示例2:

+----------------+----------+-
| Host           | User     | ...
+----------------+----------+-
| %              | jeffrey  | ...
| thomas.loc.gov |          | ...
+----------------+----------+-

排序后:

+----------------+----------+-
| Host           | User     | ...
+----------------+----------+-
| thomas.loc.gov |          | ...
| %              | jeffrey  | ...
+----------------+----------+-

thomas.loc.gov 优先匹配

解决方法:
可以删除 匿名用户
DROP USER ''@'localhost';

  1. http://stackoverflow.com/questions/8348506/grant-remote-access-of-mysql-database-from-any-ip-address

  2. http://stackoverflow.com/questions/8348506/grant-remote-access-of-mysql-database-from-any-ip-address

  3. http://dev.mysql.com/doc/refman/5.7/en/default-privileges.html

  4. http://stackoverflow.com/questions/10299148/mysql-error-1045-28000-access-denied-for-user-billlocalhost-using-passw/11216911#11216911

  5. http://dev.mysql.com/doc/refman/5.5/en/connection-access.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

Xampp下MariaDB的登陆(ERROR 1044 (42000):Access denied for user ''@'localhost' to database)

Xampp下MariaDB的登陆(ERROR 1044 (42000):Access denied for user ''@'localhost' to database)
  • tdtcn
  • tdtcn
  • 2016年03月18日 20:12
  • 553

centos7 安装 mariadb 的正确命令

使用的是linode的centos7系统,安装mysql发现已经默认的是mariadb。 但是不管是使用linode官网说明还是百度搜索到的的根本安装方法无法安装成功。 总是提示这一句: ERROR ...
  • default7
  • default7
  • 2014年09月08日 19:38
  • 53399

Access denied for user(这个几乎让我怀疑人生的异常)

昨天一时兴起,打算根据自己的某些想法,业余时间写一个简单的项目,用以巩固那些重要的知识,以及练手一些即将学习的技术。 然而才一开始,便有一盆冷水迎面而来,在搭建整个框架环境的时候竟然就被卡住了!主要...
  • tuzongxun
  • tuzongxun
  • 2016年11月29日 11:08
  • 7263

RROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

错误描述: Mysql中添加用户之后可能出现登录时提示ERROR 1045 (28000): Access denied for user的错误.删除user.user中值为NULL的,或更新NULL...
  • wuzhilon88
  • wuzhilon88
  • 2015年07月14日 10:11
  • 2573

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

ERROR 1045 (28000): Access denied for user'root'@'localhost'(using password:YES)        我开始以为是版本的问题,...
  • muyu114
  • muyu114
  • 2011年04月14日 00:10
  • 14558

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

mysql 安装后,登录报错,虽然安装时设置了密码。 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using pas...
  • tspangle
  • tspangle
  • 2014年01月20日 15:39
  • 7012

【MySql】ERROR 1045 (28000): Access denied for user 'ambari'@'localhost' (using password: YES)

授权mysql> grant all privileges on *.* to ambari@'localhost' identified by 'bigdata'; Query OK, 0 rows...
  • snoopy93
  • snoopy93
  • 2016年01月13日 21:55
  • 1901

完美解决 ERROR 1045 (28000): Access denied for user 'mysql'@'localhost' (using password: NO)

今天操作linux服务器,操作mysql数据库时候,按照正常流程, 之前就是这么操作的,今天怎么报错了呢? 然后上网百度,找到方法:# /etc/init.d/MySQL stop # mys...
  • tomcat_2014
  • tomcat_2014
  • 2017年06月07日 19:17
  • 1287

ubuntu 系统解决mysql连接问题(ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO))

我的系统是ubuntu8.04,最近新装好的mysql在进入mysql工具时,总是有错误提示:
  • polokang
  • polokang
  • 2011年05月24日 15:34
  • 13887

15.连接mysql报错ERROR 1045 (28000) Access denied for user (using password YES)

2016.10.14 今天程序员节啊 1.问题描述 之前做项目一直用的root用户进行的mysql数据库操作,觉得不安全,今天新建了个用户darry,打算将项目使用的用户换成darry 但是新...
  • Darry_Zhao
  • Darry_Zhao
  • 2016年10月24日 18:41
  • 2435
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ERROR 1045 (28000): Access denied for user 'myuser'@'localhost' (using password: YES)
举报原因:
原因补充:

(最多只允许输入30个字)