尝试授予特权时,拒绝用户'root'@'localhost'的访问如何授予特权?

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 尝试授予特权时,拒绝用户'root'@'localhost'的访问如何授予特权?

如何解决尝试授予特权时,拒绝用户'root'@'localhost'的访问如何授予特权??
注意输出

SHOW GRANTS FOR 'root'@'localhost';
没有说“ ALL PRIVILEGES”,而是不得不说出root @ localhost的含义。

授予所有特权将失败,因为用户无法授予他/她没有的特权,并且服务器似乎认为这里不存在某些东西…

现在,接下来缺少什么呢?

在我的系统上,我得到以下信息:

MysqL> select version();
version()
5.5.21-log

1 row in set (0.00 sec)

MysqL> SHOW GRANTS FOR 'root'@'localhost';
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> SELECT * FROM MysqL.user WHERE User='root' and Host='localhost'\G
1. row **

              Host: localhost
              User: root
          Password: 
       Select_priv: Y
       Insert_priv: Y
       Update_priv: Y
       Delete_priv: Y
       Create_priv: Y
         Drop_priv: Y
       Reload_priv: Y
     Shutdown_priv: Y
      Process_priv: Y
         File_priv: Y
        Grant_priv: Y
   References_priv: Y
        Index_priv: Y
        Alter_priv: Y
      Show_db_priv: Y
        Super_priv: Y

Create_tmp_table_priv: Y

  Lock_tables_priv: Y
      Execute_priv: Y
   Repl_slave_priv: Y
  Repl_client_priv: Y
  Create_view_priv: Y
    Show_view_priv: Y

Create_routine_priv: Y

Alter_routine_priv: Y
  Create_user_priv: Y
        Event_priv: Y
      Trigger_priv: Y

Create_tablespace_priv: Y <----------------------------- new column in 5.5

          ssl_type: 
        ssl_cipher: 
       x509_issuer: 
      x509_subject: 
     max_questions: 0
       max_updates: 0
   max_connections: 0

max_user_connections: 0

            plugin: <------------------------------- new column in 5.5

authentication_string: <------------------------------- new column in 5.5
1 row in set (0.00 sec)
5.5中还有一些新表,例如MysqL.proxies_user:确保您拥有它们。

安装全新的MysqL服务器实例时,安装脚本将创建具有适当结构的所有MysqL。*表。

从旧版本升级时,请确保使用正确的升级过程(MysqL_upgrade),它将添加缺少的表/列。

这只是一个猜测,但似乎该实例的MysqL_upgrade未完成,导致出现了这种现象。

解决方法
我看过许多类似的问题,因此表明我已经检查了基础知识。当然,这并不意味着我没有错过任何显而易见的东西。:-)

我的问题是:为什么我拒绝具有特权的用户访问权限,而我却已经在其中输入密码并被授予访问权限?(为了完整起见,我尝试输入错误的密码只是为了确保MySQL客户端在程序启动时拒绝我访问。)

背景:

通过ssh登录到运行MySQL服务器的计算机的外壳,我以root用户身份登录:

[myname@host ~]$ mysql -u root -p -hlocalhost
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 62396
Server version: 5.5.18-log MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
太棒了 我对类似问题的答案的阅读表明,我应该确保特权与授予表中的权限保持最新

mysql> FLUSH PRIVILEGES;
Query OK,0 rows affected (0.00 sec)
mysql>
接下来,请确保我是我认为的我:

mysql> SELECT user();
user()
root@localhost

1 row in set (0.00 sec)
…真的 真的很 确定:

mysql> SELECT current_user();
current_user()
root@localhost

1 row in set (0.00 sec)
mysql>
到目前为止,一切都很好。现在我有什么特权?

mysql> SHOW GRANTS FOR 'root'@'localhost';
Grants for root@localhost
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,RELOAD,SHUTDOWN,PROCESS,FILE,REFERENCES,INDEX,ALTER,SHOW DATABASES,SUPER,CREATE TEMPORARY TABLES,LOCK TABLES,EXECUTE,REPLICATION SLAVE,REPLICATION CLIENT,CREATE VIEW,SHOW VIEW,CREATE ROUTINE,ALTER ROUTINE,CREATE USER,EVENT,TRIGGER ON . TO 'root'@'localhost' IDENTIFIED BY PASSWORD '[OBSCURED]' WITH GRANT OPTION

1 row in set (0.00 sec)
现在有点难以理解,所以让我们尝试这种方式(您还将看到有一个非本地“ root”用户):

mysql> SELECT * FROM mysql.user WHERE User='root'\G
1. row **

             Host: localhost
             User: root
         Password: *[OBSCURED]
      Select_priv: Y
      Insert_priv: Y
      Update_priv: Y
      Delete_priv: Y
      Create_priv: Y
        Drop_priv: Y
      Reload_priv: Y
    Shutdown_priv: Y
     Process_priv: Y
        File_priv: Y
       Grant_priv: Y
  References_priv: Y
       Index_priv: Y
       Alter_priv: Y
     Show_db_priv: Y
       Super_priv: Y

Create_tmp_table_priv: Y

 Lock_tables_priv: Y
     Execute_priv: Y
  Repl_slave_priv: Y
 Repl_client_priv: Y
 Create_view_priv: Y
   Show_view_priv: Y

Create_routine_priv: Y
Alter_routine_priv: Y

 Create_user_priv: Y
       Event_priv: Y
     Trigger_priv: Y
         ssl_type: 
       ssl_cipher: 
      x509_issuer: 
     x509_subject: 
    max_questions: 0
      max_updates: 0
  max_connections: 0

max_user_connections: 0
2. row **

             Host: [HOSTNAME].com
             User: root
         Password: *[OBSCURED]
      Select_priv: Y
      Insert_priv: Y
      Update_priv: Y
      Delete_priv: Y
      Create_priv: Y
        Drop_priv: Y
      Reload_priv: Y
    Shutdown_priv: Y
     Process_priv: Y
        File_priv: Y
       Grant_priv: Y
  References_priv: Y
       Index_priv: Y
       Alter_priv: Y
     Show_db_priv: Y
       Super_priv: Y

Create_tmp_table_priv: Y

 Lock_tables_priv: Y
     Execute_priv: Y
  Repl_slave_priv: Y
 Repl_client_priv: Y
 Create_view_priv: Y
   Show_view_priv: Y

Create_routine_priv: Y
Alter_routine_priv: Y

 Create_user_priv: Y
       Event_priv: Y
     Trigger_priv: Y
         ssl_type: 
       ssl_cipher: 
      x509_issuer: 
     x509_subject: 
    max_questions: 0
      max_updates: 0
  max_connections: 0

max_user_connections: 0
2 rows in set (0.00 sec)
太棒了!MySQL认为我是root @ localhost,而root @ localhost拥有所有这些特权。这意味着我应该能够做我想做的事,对不对?

mysql> GRANT ALL PRIVILEGES ON . TO 'steves'@'[hostname].com' IDENTIFIED BY '[OBSCURED]' WITH GRANT OPTION;
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
我怎么能搞砸这个基本的东西?

旁注:对于任何想建议我没有名为root的用户都具有所有特权的用户,这很好,一旦我可以给另一个用户一些特权,我将考虑做一些事情。

谢谢!

声明:地推任务网所有作品(图片、文字)均由用户自行上传分享,仅供网友学习交流。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
JSON 数据格式 容器
Layui 内置方法 - layer.photos(相册层)
Layui 内置方法 - layer.photos(相册层)
2087 0
|
6月前
|
存储 SQL 关系型数据库
|
6月前
|
Ubuntu Linux
"unzip"命令解析:Linux下如何处理压缩文件。
总的来说,`unzip`命令是Linux系统下一款实用而方便的ZIP格式文件处理工具。本文通过简明扼要的方式,详细介绍了在各类Linux发行版上安装 `unzip`的方法,以及如何使用 `unzip`命令进行解压、查看和测试ZIP文件。希望本文章能为用户带来实际帮助,提高日常操作的效率。
896 12
|
安全 关系型数据库 MySQL
mysql 安装插件 validate_password
mysql 安装插件 validate_password
887 0
|
存储 开发工具 数据安全/隐私保护
什么是Iaas,Paas,Saas?
IaaS(基础设施即服务)提供网络上的IT基础设施服务,按需计费;PaaS(平台即服务)则提供运算平台与解决方案服务,助力用户在云端基础设施上构建与部署应用;而SaaS(软件即服务)通过网络交付软件服务,让用户能够便捷地使用已部署好的应用程序,无需关心底层技术细节。以厨房为例,IaaS如同提供厨房用品,用户自行烹饪;PaaS则是提供预制菜,减少前期准备;SaaS则像点外卖,直接享用成品菜肴。
5280 3
|
PHP
PHP显示报错提示,开启display_errors的方法
PHP显示报错提示,开启display_errors的方法
315 0
|
测试技术
黑盒测试、白盒测试、灰盒测试的区别和各自的目的
黑盒测试、白盒测试和灰盒测试是软件测试中常用的测试方法。它们的区别和各自的目的如下: 1. 黑盒测试(Black Box Testing): - 黑盒测试是一种功能性测试方法,使用者只关注输入和输出,不考虑内部结构和实现细节。 - 黑盒测试的目的是验证软件功能是否按照需求规格说明书的要求来执行。 - 测试人员不需要了解软件的内部逻辑和代码,只需关注输入和输出的正确性。 - 黑盒测试可通过设计测试用例,模拟用户使用软件的场景,以验证系统的正确性。 2. 白盒测试(White Box Testing): - 白盒测试是一种结构性测试方法,测试人员了解软件的内部结构
4948 0
|
容器
RT-Thread快速入门-事件集
RT-Thread快速入门-事件集
280 0
|
Java 关系型数据库 MySQL
Spring Boot中集成MySQL数据库的步骤和技巧
Spring Boot中集成MySQL数据库的步骤和技巧
|
缓存 前端开发 PHP
【超详细】php实现扫码关注微信公众号系统/网站自动注册登录
【超详细】php实现扫码关注微信公众号系统/网站自动注册登录
753 0