阿里雲RDS的高權限不是真正的高權限

阿里雲RDS的高權限不是真正的高權限

如下圖所示在阿里雲RDS中升級到了“高權限賬號”

但是在實際操作中發現grant 賦權失敗,奇怪的是報錯ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)
這個錯誤一般是因爲密碼的問題,但是這裏能成功登陸密碼肯定沒有問題

那就繼續排查啥情況
1、先看看當前這個用戶的權限 root@'%'

MySQL [(none)]> show grants for root;
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@%                                                                                                                                                                                                                                                                                              |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, 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'@'%' WITH GRANT OPTION |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

看上去好像沒有問題
2、看看系統都有哪些用戶

MySQL [(none)]> select user,host from mysql.user ;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| demo1         | %         |
| rds_service   | %         |
| root          | %         |
| zabbix        | %         |
| zentaopms     | %         |
| aliyun_root   | 127.0.0.1 |
+---------------+-----------+
14 rows in set (0.00 sec)

發現除了 高權限root 外還有個一個aliyun_root
3、排查這個用戶權限看看

MySQL [(none)]> show grants for aliyun_root@'127.0.0.1';
+----------------------------------------------------------------------------+
| Grants for [email protected]                                           |
+----------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'aliyun_root'@'127.0.0.1' WITH GRANT OPTION |
+----------------------------------------------------------------------------+
1 row in set (0.00 sec)

all privileges 這個用戶纔是我們一般認爲的真正的高權限root,擁有 所有權限。

疑問

那麼疑問出來了。阿里雲給定的高權限和all privileges 之間存在差異。

驗證

具體驗證過程可以參考另外一篇文章
驗證之後發現 *.* 上面的 all privileges 和這裏阿里雲給定的高權限賬號 之間的權限是存在差異的;

阿里雲給定的高權限賬號 實際缺少了SHUTDOWN, FILE, SHOW DATABASES, SUPER, CREATE TABLESPACE 幾個權限。

所以你在賦權的時候使用all privileges 但是實際你是沒有上面幾個權限的。所以出現了上面的錯誤

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章