Linux连接mysql报错:Access denied for user ‘root’@‘localhost’(using password: YES)的解决方法

  • Post category:http

当我们在Linux中连接mysql时,有时会遇到 “Access denied for user ‘root’@’localhost’ (using password:YES)”这个错误提示。这个错误通常是由于密码错误或者权限不够引起的。可以按以下步骤进行排查并解决该问题。

步骤1:检查用户名和密码是否正确
首先, 我们需要检查用户名和密码是否正确。在bash中输入以下命令。

mysql -u root -p

如果密码正确,我们应该可以成功登录到mysql控制台。

步骤2:检查mysql用户的权限
如果用户名和密码正确,但是仍然遇到了访问错误的信息,那么可能是用户的权限设置的问题。可以通过以下命令在mysql中检查当前用户的权限。

SHOW GRANTS FOR 'root'@'localhost';

如果我们发现当前用户的权限不足以访问某些数据库或表,就可以通过以下命令来授权。

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'YourPassword';

这个命令授权给root用户在所有数据库和表上拥有所有的权限,同时需要将 “YourPassword” 替换为root用户的密码。

示例1
假设我们的mysql用户名为“admin”,密码为“12345”,我们需要连接到”testdatabase”数据库上,但是程序提示“Access denied”,那么我们可以尝试以下命令。

mysql -u admin -p12345 testdatabase

此时,如果仍然出现”Access denied for user ‘admin’@’localhost’ (using password:YES)”的错误信息,可以考虑执行步骤2中的授权命令。

示例2
假设我们已经成功登录到mysql控制台,但是仍然无法访问某些数据库或表,我们可以采用以下命令查看当前用户的权限。

SHOW GRANTS FOR 'root'@'localhost';

结果可能会是下面这个样子。

+-----------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost                                                                                            |
+-----------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*D24F12Q7YNKL23JH5679JDHFSKJH89' WITH GRANT OPTION |
+-----------------------------------------------------------------------------------------------------------------------+

我们可以发现,root用户已经被授权拥有访问所有数据库和表的权限,如果有具体的授权问题需要再做相应的修改。