Table of Contents
最近遇到一个 MySQL 登录报
ERROR 1045 错误 的问题,用户可以确认密码正确,现整理可能导致 ERROR 1045 错误 的原因。
ERROR 1045 解释
MySQL 登录报 ERROR 1045错误的问题原因汇总。
在Linux 服务器上我们可以通过 perror + 错误代码的方式进行查看具体的错误信息,比如 MySQL 的ERROR 1045 (28000) 错误可以通过 perror 1045 进行查看
[root@liups ~]# perror 1045
MySQL error code 1045 (ER_ACCESS_DENIED_ERROR): Access denied for user '%-.48s'@'%-.64s' (using password: %s)
关于此信息的解释如下:
此错误分为3部分,MySQL error code 1045 (ER_ACCESS_DENIED_ERROR) 是错误代码,Access denied for user ‘%-.48s’@‘%-.64s’ 是解释说明,用户’%-.48s’@‘%-.64s’ 拒绝访问,其中 ‘%-.48s’@‘%-.64s’ 用户部分根据登录的用户信息进行变化:@前面是你登录的-u 参数指定用户名 ,@ h后面是你当前服务器的ip地址(可以是localhost,具体的IP地址,也可以是当前主机的名称);(using password: %s)是说明 是否使用了密码,%S 通常是 YES或者 NO,就是本次登录是否使用了密码。
问题汇总及解决方案
[root@liups ~]# mysql -uliups -p -h 127.x.x.9 -P3306
Enter password:
ERROR 1045 (28000): Access denied for user 'liups'@'10.x.x.1' (using password: YES)
如提示,可以看到() 里的提示(using password: YES),说明本次操作使用了密码,输入了错误的用户名、密码,请确保输入正常的用户名、密码。如字面意思,检查用户名和密码是否正确。
[root@liupsdb~]# mysql -uliups -p -h192.x.x.1
Enter password:
ERROR 1045 (28000): Access denied for user 'liups'@'10.x.x.1' (using password: YES)
如果确认用户名密码都正确,请检查上面报错信息的用户名@后面的IP地址(比如上面的例子是’10.x.x.1’ )是否在 mysql.user 的host字段里。
mysql> select user,host from mysql.user where user='liups';
+------+-------------+
| user | host |
+------+-------------+
| liups | 192.x.x.2 |
+------+-------------+
1 row in set (0.01 sec)
可以看到,10.x.x.1 的ip地址不属于/包含在192.x.x.2 里,说明 liups 用户在当前主机 ‘10.x.x.1’ 是没有访问权限的,需要调整权限,或者使用liups用户在允许的主机上(本例是 192.x.x.2) 上登录。
注意:
当报错是用户名@localhost 的时候需要注意:
当我们使用 mysql -uliups -p 不使用-h参数的时候,会报如下信息:
[root@liupsdb ~]# mysql -uliups -p
Enter password:
ERROR 1045 (28000): Access denied for user 'liups'@'localhost' (using password: YES)
需要检查是否有localhost的用户,如果只有用户@‘192.x.x.1’ 或者是ip范围缎的时候,localhost 是无法登录的,但是如果是用户@‘%’ 的时候是可以登录的。
mysql> select user,host from mysql.user where user='liups';
+------+----------------+
| user | host |
+------+----------------+
| liups | 116.x.x.x |
| liups | 172.x.x.% |
| liups | 192.xx.1.1 |
+------+----------------+
3 rows in set (0.00 sec)
解决方案:
1、是新增-h参数指定服务器的ip
2、新增用户@'localhost’的用户
3、新增用户@'%’的用户
当没有输入密码的时候报错信息如下:
ERROR 1045 (28000): Access denied for user 'liups'@'localhost' (using password: NO)
即 using password: NO,说明当前没有输入密码,输入正确的密码即可。




