Linux 下,mysql数据库报无法登陆错误:ERROR 1045 (28000): Access denied for use

时间:2023-03-08 19:30:59
Linux 下,mysql数据库报无法登陆错误:ERROR 1045 (28000): Access denied for use

今天在别人的服务器上登录mysql发现无法登陆(Mysql别人实现安装好的) 
密码和用户名都是正确的,但登录后报如下错误: 
ERROR 1045 (28000): Access denied for user ‘admin’@'localhost’ (using password: YES)

尝试了加入-h和-port也无法登陆,最后只能重新修改了。注--该方法也可以用于当忘记数据库密码时,找回数据库密码用

如下是我执行过程,完全执行后,可以顺利登录数据库:linux下的执行脚本:

    1. login as: root
    2. Access denied
    3. root@×××××××'s password:
    4. Last login: Tue Feb 21 03:56:49 2012 from 218.17.162.225
    5. [root@INOTRADE ~]# ps -A
    6. PID TTY          TIME CMD
    7. 1 ?        00:00:01 init
    8. 1117 ?        00:00:00 udevd
    9. 1394 ?        00:00:00 syslogd
    10. 1405 ?        00:00:00 sshd
    11. 1414 ?        00:00:00 xinetd
    12. 1427 ?        00:00:00 couriertcpd
    13. 1429 ?        00:00:00 courierlogger
    14. 1437 ?        00:00:00 couriertcpd
    15. 1439 ?        00:00:00 courierlogger
    16. 1445 ?        00:00:00 couriertcpd
    17. 1447 ?        00:00:00 courierlogger
    18. 1454 ?        00:00:00 couriertcpd
    19. 1456 ?        00:00:00 courierlogger
    20. 1466 ?        00:00:00 qmail-send
    21. 1468 ?        00:00:00 splogger
    22. 1469 ?        00:00:00 qmail-lspawn
    23. 1470 ?        00:00:00 qmail-rspawn
    24. 1471 ?        00:00:00 qmail-clean
    25. 1486 ?        00:00:00 httpd
    26. 1528 ?        00:00:00 named
    27. 1573 ?        00:00:00 mysqld_safe
    28. 1623 ?        00:00:00 mysqld
    29. 1629 ?        00:00:00 httpd
    30. 1655 ?        00:00:00 httpsd
    31. 1659 ?        00:00:00 httpsd
    32. 1674 ?        00:00:00 crond
    33. 1682 ?        00:00:00 saslauthd
    34. 1683 ?        00:00:00 saslauthd
    35. 1689 ?        00:00:00 sshd
    36. 1691 pts/0    00:00:00 bash
    37. 1718 pts/0    00:00:00 ps
    38. // 无法登陆,密码正确的,不知道为什么,原来数据库表的访问权限也已经设置了的
    39. [root@INOTRADE ~]# mysql -uroot -p
    40. Enter password:
    41. [root@INOTRADE ~]# ERROR 1045 (28000): Access denied for user ‘admin’@'localhost’ (using password: YES)
    42. [root@INOTRADE ~]# mysql -uroot -p****** -hlocalhost
    43. [root@INOTRADE ~]# ERROR 1045 (28000): Access denied for user ‘admin’@'localhost’ (using password: YES)
    44. // 执行脚本,更新mysql数据库的数据,如用户名密码
    45. [root@INOTRADE ~]# sudo /etc/init.d/mysqld stop
    46. Stopping MySQL:                                            [  OK  ]
    47. [root@INOTRADE ~]# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
    48. [1] 1759
    49. ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
    50. [root@INOTRADE ~]# Starting mysqld daemon with databases from /var/lib/mysql
    51. -- 这步可能不会自动执行,等待十几秒后就可以直接回车返回到命令行模式下,然后登录到mysql服务器
    52. [root@INOTRADE ~]#
    53. [root@INOTRADE ~]# mysql -u root mysql
    54. Reading table information for completion of table and column names
    55. You can turn off this feature to get a quicker startup with -A
    56. Welcome to the MySQL monitor.  Commands end with ; or \g.
    57. Your MySQL connection id is 1
    58. Server version: 5.0.77 Source distribution
    59. Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
    60. mysql> select  host, user from user;
    61. +-----------+------------------+
    62. | host      | user             |
    63. +-----------+------------------+
    64. | %         | admin            |
    65. | localhost | admin            |
    66. | localhost | horde            |
    67. | localhost | pma_OBBVuV2L3mjn |
    68. +-----------+------------------+
    69. 4 rows in set (0.00 sec)
    70. -- 因为我数据库中没有root,换为admin了
    71. mysql> UPDATE user SET Password=PASSWORD('******') where USER='admin';
    72. Query OK, 2 rows affected (0.02 sec)
    73. Rows matched: 2  Changed: 2  Warnings: 0
    74. mysql> FLUSH PRIVILEGES;
    75. Query OK, 0 rows affected (0.02 sec)
    76. mysql> quit;
    77. Bye
    78. [root@INOTRADE ~]# /etc/init.d/mysqld restart
    79. STOPPING server from pid file /var/run/mysqld/mysqld.pid
    80. 120221 05:08:02  mysqld ended
    81. Stopping MySQL:                                            [  OK  ]
    82. Starting MySQL:                                            [  OK  ]
    83. [1]+  Done                    mysqld_safe --user=mysql --skip-grant-tables --skip-networking
    84. // 至此, 重启后就可以正常登录了
    85. [root@INOTRADE ~]# mysql -uadmin -p******
    86. Welcome to the MySQL monitor.  Commands end with ; or \g.
    87. Your MySQL connection id is 3
    88. Server version: 5.0.77 Source distribution
    89. Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
    90. mysql> show databases;
    91. +-------------------------+
    92. | Database                |
    93. +-------------------------+
    94. | information_schema      |
    95. | *******                 |
    96. | horde                   |
    97. | mysql                   |
    98. +-------------------------+
    99. 7 rows in set (0.01 sec)
    100. mysql> use ********;
    101. Reading table information for completion of table and column names
    102. You can turn off this feature to get a quicker startup with -A
    103. Database changed
    104. mysql> show tables;
    105. +------------------------------+
    106. | Tables_in_CQT_AMS            |
    107. +------------------------------+
    108. | T_ALM_APPLICATION            |
    109. | *****************            |
    110. | T_SYS_ROLE                   |
    111. | T_SYS_USER_INFO              |
    112. | T_SYS_USER_ROLE              |
    113. +------------------------------+
    114. 22 rows in set (0.00 sec)
    115. mysql> quit
    116. Bye
    117. [root@INOTRADE ~]#