2011-04-18 47 views
3

我需要在Linux服務器上進行夜間mysql維護期間使遠程訪問變得混亂,以便在此期間沒有人能夠查詢數據庫。我不能做SERVICE MYSQL STOP,因爲那時我無法做我需要做的事情(截斷和重建一對錶)。有沒有辦法短時間關閉外部訪問?
在此先感謝。暫時禁用mysql遠程訪問

+0

你的意思是否定本地主機以外的連接? – elitalon 2011-04-18 18:45:49

+0

是的,這是正確的 – 2011-04-18 19:11:07

回答

9

這裏是沒有操作系統不能碰到任何一個偉大的方式:

步驟1)導出所有用戶的SQL文件是這樣的:

的mysql -h本地主機ü根 -p rootpassword - - '-skip-column-names -A -e'SELECT CONCAT('SHOW GRANTS FOR''',user,'''''',host,''';')FROM mysql.user WHERE user <>' '「 mysql -hlocalhost -uroot -prootpassword --skip-column-names -A | SED的/ $ /;/G'> /root/MySQLGrants.sql

步驟2)除了禁用根@本地所有用戶

DELETE FROM mysql.user WHERE CONCAT(user,host) <> 'rootlocalhost'; 
FLUSH PRIVILEGES; 

步驟3)執行您的維護

步驟4)刷新贈款

mysql -h localhost -u root -p rootpassword < /root/MySQLGrants.sql 

試試這個!!!!

PS

服務重新啓動mysql的--skip-網絡

仍然是最簡單和最快的方式加上維修

只運行MySQL的服務重新啓動您的維護前後註銷所有連接

+0

實際上,這聽起來不錯...我需要做的維護是從本地腳本...爲什麼這是一個壞主意? – 2011-04-18 19:12:11

+0

我以爲我最初說的話是個不好的主意,因爲我認爲mysql需要不斷上升。 – RolandoMySQLDBA 2011-04-18 19:19:10

+0

哦......好了,如果服務mysqld restart - skip-networking做了一個優雅的重啓(也就是說,等待主動查詢完成),那麼它將是完美的。我確實需要mysql來維護而不是用戶。 – 2011-04-18 20:10:30

0

禁用遠程應用程序使用的登錄憑據?

防火牆的MySQL端口,所以它不能被遠程應用程序訪問?

+0

好主意......但我希望稍微順暢些。關閉端口可能會損壞查詢。撤銷和重新建立特權比我想要的要多一點工作。我希望有一些晦澀的mysql命令可以做到這一點。 – 2011-04-18 18:51:03

+0

@xivix關閉端口如何損壞查詢? – 2011-04-18 19:04:14

+0

我最終可能會在選擇或更新中關閉一個端口,從而不會向請求者或結果提供反饋。這只是不乾淨。 – 2011-04-18 19:06:12

0

還有一些方法可以在維護期間臨時禁用對MySQL數據庫的訪問。 編輯/etc/mysql/my.conf」

更改綁定,地址: 綁定地址127.0.0.1 =

重啓MySQL: 服務重新啓動mysql的--skip-網絡

沒人將從遠程訪問MySQL服務器,直到您將bind-address更改爲原始值並再次重新啓動MySQL。