標籤:mysql;mysql驗證
首先感謝在本次故障中阿銘對我的無私協助,萬分感謝!阿銘linux論壇:http://www.apelearn.com/study_v2/
問題描述:
公司安全部門掃描到資料庫安全隱患,資料庫不需要經過身分識別驗證就可直接遠端連線。
處理步驟:
①:查看發現my.cf中開啟了--skip-grant-table #懷疑是之前的管理員忘記了root密碼才這樣弄的。
②:使用如下命令更改資料庫密碼並寫入。如果你知道root密碼可以省掉,因為我沒有root密碼所以就更改了一下。
UPDATE user SET Password = password(‘123456‘) where user = ‘root‘;
FLUSH privileges;
③:停止資料庫,將--skip-grant-table注釋掉,並啟動資料庫。
④:使用如下命令登陸資料庫,但是報錯。
mysql -uroot -p123456
ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
⑤:使用mysql -uroot可以進入資料庫,但是只能看到test這個資料,是我在加--skip-grant-table下查到的所有資料看。
+-----------------------+
| Database |
+-----------------------+
| information_schema |
| activemq |
| bjsdzx_real |
| emcc |
| estonerhr_cms |
| estonerhr_oa |
| logistic |
| logistic_shortmessage |
| mysql |
| performance_schema |
| test |
+-----------------------+
注:在加--skip-grant-table時使用命令 select host, user, password from mysql.user;得到如下資訊。
+-----------------------+--------+-------------------------------------------+
| host | user | password |
+-----------------------+--------+-------------------------------------------+
| % | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| localhost.localdomain | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| 127.0.0.1 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| ::1 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| localhost | | |
| localhost.localdomain | | |
| % | server | *866D5A029D62EC05ACC4584CE50F1CD2F50E0E82 |
+-----------------------+--------+-------------------------------------------+
7 rows in set (0.00 sec)
解決步驟:銘哥給我的答案是,在mysql.user表裡兩個空使用者,刪除之後改密碼然後授權就可以了。
①在開啟--skip-grant-table參數的情況下啟動資料庫並使用如下命令刪除mysql.user表裡的空使用者。
mysql> delete from mysql.user where user=‘‘;
Query OK, 2 rows affected (0.00 sec)
②使用如下命令查詢mysql.user裡面的內容,發現空使用者已經被刪除了。
mysql> select host, user, password from user\G;
+-----------------------+--------+-------------------------------------------+
| host | user | password |
+-----------------------+--------+-------------------------------------------+
| % | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| localhost.localdomain | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| 127.0.0.1 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| ::1 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| % | server | *866D5A029D62EC05ACC4584CE50F1CD2F50E0E82 |
+-----------------------+--------+-------------------------------------------+
5 rows in set (0.00 sec)
③使用如下命令更改root密碼為123456
mysql> UPDATE mysql.user SET Password = password(‘123456‘) where user = ‘root‘;
④使用如下命令授權root使用者權限
mysql> grant all on *.* to ‘root‘@‘%‘ identified by ‘123456‘;
⑤使用如下命令將記憶體資訊寫入檔案
mysql> flush privileges;
⑥退出登入,注釋掉my.cf檔案裡的--skip-grant-table
⑦重啟mysql服務。
驗證:
①使用如下命令進入mysql
mysql>mysql -uroot -p 123456;
②使用如下命令查詢所有資料庫,發現都能看得見了
mysql> show databases;
+-----------------------+
| Database |
+-----------------------+
| information_schema |
| activemq |
| bjsdzx_real |
| emcc |
| estonerhr_cms |
| estonerhr_oa |
| logistic |
| logistic_shortmessage |
| mysql |
| performance_schema |
| test |
+-----------------------+
11 rows in set (0.00 sec)
=============================至此結束,故障處理完畢===================
本文出自 “王小可的技術部落格” 部落格,請務必保留此出處http://wangxiaoke.blog.51cto.com/5150707/1685924
Mysql不需要身分識別驗證便可遠端連線故障