首页 > 解决方案 > 从命令行登录时 MySQL 不要求输入 root 密码

问题描述

centos 7上的mysql 5.7.22

需要明确的是,我设置了 root 密码。通常我使用登录

mysql -u root -p

今天我只打字后不小心按了Enter

mysql

我很震惊地发现我以 root 用户身份登录。显示赠款显示

mysql> show grants;
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)

然后我尝试了

mysql -u root

它仍然没有要求输入密码来登录。

首先,我认为这是一些有线设置问题,因为我是从 localhost 登录的。但是,当我尝试使用 serverIP/phpmyadmin 从 Web 浏览器登录时,它确实要求输入 root 密码。

有谁知道发生了什么?谢谢

标签: mysql

解决方案


我假设您已经以 root 身份登录了 ssh?如果你是,那么据我从我的经验来看,这将是正确的。当您在服务器本身上以 Root 用户身份登录时,您可以完全控制整个操作系统及其所有应用程序。没有“权限提升”,因为作为 root 服务器用户,您可以轻松更改 MySQL 的 root 密码(或者实际上是 MySql 安装的任何方面)。

尝试以标准用户身份登录服务器,然后尝试相同的操作,除非您设置了匿名用户,否则它应该不起作用。

您可以通过以下方式查看所有用户及其主机:

SELECT host, user, authentication_string, plugin FROM mysql.user;

这将向您显示是否设置了密码(在 authentication_string 中将有一个条目)以及 db 用户的“插件”(重新向后兼容早期版本的 MySQL)


推荐阅读