mysql - 从命令行登录时 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 密码。
有谁知道发生了什么?谢谢
解决方案
我假设您已经以 root 身份登录了 ssh?如果你是,那么据我从我的经验来看,这将是正确的。当您在服务器本身上以 Root 用户身份登录时,您可以完全控制整个操作系统及其所有应用程序。没有“权限提升”,因为作为 root 服务器用户,您可以轻松更改 MySQL 的 root 密码(或者实际上是 MySql 安装的任何方面)。
尝试以标准用户身份登录服务器,然后尝试相同的操作,除非您设置了匿名用户,否则它应该不起作用。
您可以通过以下方式查看所有用户及其主机:
SELECT host, user, authentication_string, plugin FROM mysql.user;
这将向您显示是否设置了密码(在 authentication_string 中将有一个条目)以及 db 用户的“插件”(重新向后兼容早期版本的 MySQL)
推荐阅读
- python - 不是懒惰的查询集调用外部方法
- mt4 - MQL 4/5 找到蜡烛的中心 25% 和 75%
- xaml - 如何将登录页面作为 ShellItem 添加到 Shell 而不显示为 FlyoutItem
- sql-server - 如何创建慢视图?
- java - 有没有办法在复制 sftp 文件之前根据 talend 中文件名的第一部分动态创建文件夹
- amazon-web-services - 如何在不通过 Kinesis Data Stream 的情况下直接将 KPL(Kinesis Producer Library)集成到 Kinesis firehose
- php - Laravel - 显示特定列的结果(分页)
- javascript - JavaScript 中的模块
- c# - TSql150Parser.Parse() 找不到错误
- mongodb - 如何从对象数组中返回匹配的文档