国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL root用戶登錄的幾處小問題

2024-07-24 12:31:31
字體:
來源:轉載
供稿:網友
       今天和同事聊了聊技術的事情,聊到BAT里面的一些高大上的系統和設計,相比總是會有些差距,不過像那樣體量的公司知識沉淀很深,所以能夠做好我們力所能及的事情,把它細化做好,也是一種進步和改進。
 
        如果你老是覺得自己的環境受限,有各種KPI或者是成本的考量,做事情從下往上去推動很難,這些都是實際的困難,很多公司都是存在這樣的問題的。在資源受限方面,我尤其糾結,舉個有意思的小例子,如果我收到一條報警,提示數據庫表空間不足了,那就添加一個數據文件唄,結果數據庫層面的空間問題解決了,而馬上會收到一個系統空間不足的報警,碰到這種情況,你自己體會,心情肯定是很復雜的。
 
        今天碰到的一個案例比較特別,是關于MySQL登錄的,數據庫環境是5.6版本。
 
> select version();
+-----------------+
| version()       |
+-----------------+
| 5.6.23-72.1-log |
+-----------------+
1 row in set (0.01 sec)今天同事問我一個問題,想讓我看看某個數據庫用戶的權限問題,我登錄到服務器端之后,一切都很順利。
 
# mysql
Logging to file '/home/mysql/query.log'
Welcome to the MySQL monitor.  Commands end with ; or /g.
Your MySQL connection id is 52625
Server version: 5.6.23-72.1-log Percona Server (GPL), Release 72.1, Revision 0503478一切都很正常,然后我準備看看連接到數據庫的線程情況。
 
> show processlist;
ERROR 1227 (42000): Access denied; you need (at least one of) the PROCESS privilege(s) for this operation竟然拋出了這個奇怪的錯誤,如果想查看數據字典中的信息,也被禁止了。
 
> select user,host from mysql.user;
ERROR 1142 (42000): SELECT command denied to user ''@'localhost' for table 'user'   這個時候就很糾結了,我堂堂的root用戶竟然登錄不了MySQL了,別說給同事排除故障,自己都登錄不了了。
 
帶著疑問,我查看了error log,竟然沒有發現什么相關的異常信息。
 
這個數據庫中有10個左右的數據庫用戶,大體是這樣的內容,做了修改。
 
> select user,host from mysql.user;
+----------------+-----------------------------+
| user           | host                        |
+----------------+-----------------------------+
| cloud_test     | %                           |
| cloudcs_app    | %                           |
| root           | %                           |
| cloud_test     | 10.127.138.107              |
| root           | 10.127.138.107              |
|                | localhost                   |
| jeanron        | test_user%                  |
+----------------+-----------------------------+查看show process的信息,看到是用戶是root
 
| 52629 | root           | localhost       
+-------+----------------+------------查看root@localhost的權限,竟然沒有。
 
> show grants for root@'localhost';
ERROR 1141 (42000): There is no such grant defined for user 'root' on host 'localhost'這個時候我們停一下,在這個場景中,系統mysql命令直接連接進來的是root@localhost嗎?從錯誤日志來看不是,而從線程信息來看是,所以我們需要進一步分析一下,問題在哪里。
 
雖然服務端直接mysql命令登錄后,查看不了線程情況,查看不了數據字典,但是show grants這個命令是可以的。
 
mysql> select user,host from mysql.user;
+-----------+-----------+
| user      | host      |
+-----------+-----------+
| mysql.sys | localhost |
| root      | localhost |
+-----------+-----------+
2 rows in set (0.00 sec)默認的連接方式是root@'localhost'
 
而在上面的場景中,沒有root@'localhost'的配置,就優先使用了''@'localhost'這個用戶。
 
為什么會有這個問題呢,和開發同學溝通之后,定位分析,發現原來之前這個服務器的IP發生過變化。后來開發同學自己也做了一些修改和配置,就是現在的情況了。
 
  對于這種情況怎么修復呢,我的想法是刪除匿名用戶,服務端不啟用密碼,即root@'localhost',而客戶端連接則使用域名解析的方式,但是對開發同學不開放root權限,所以我們刪除root@'%' 用戶。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广灵县| 静乐县| 开远市| 克拉玛依市| 炎陵县| 江源县| 延安市| 嵊州市| 五大连池市| 谢通门县| 木里| 平武县| 甘南县| 华阴市| 盘锦市| 旺苍县| 七台河市| 普兰县| 三河市| 毕节市| 昔阳县| 台东市| 晋州市| 嘉黎县| 阳春市| 霍州市| 荣昌县| 始兴县| 措美县| 于田县| 莆田市| 成武县| 镇坪县| 樟树市| 广河县| 伽师县| 西宁市| 丰原市| 拜城县| 云南省| 蕉岭县|