程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MySQL安全輸入密碼的一些操作介紹

MySQL安全輸入密碼的一些操作介紹

編輯:關於MYSQL數據庫

       這篇文章主要介紹了MySQL安全輸入密碼的一些操作,示例基於Linux操作系統,需要的朋友可以參考下

      當我們運行mysql客戶端連接mysql服務器的時候,以一種暴露的可被其他用戶發現的方式指定我們的密碼是不妥的。我們輸入密碼的方式有四種,其中每一種都有一定風險。下面就分別說下這四種方式:

      MySQL密碼輸入的安全操作(翻譯)

      第一種:直接在命令行後使用 -pyour_pass 或者r --password=your_pass 這兩種選項。

      舉例:

      ?

    1 shell> mysql -u ksharpdabu -pksharppassword db_name

      這種方式很方便,但是不安全,因為在某些系統裡,通過這種方式輸入的密碼對於一些系統狀態程序,比如ps命令變得可見,可以讓其他用戶調用來顯示你的命令。一般mysql客戶端通常會在初始化序列期間用零覆蓋命令行參數,但是仍然有一個短暫間隔時間內參數值可見的。

      比如,你使用shell> mysql -u ksharpdabu -pksharppassword db_name &

      將命令掛起,用shell >ps –f 命令產看,就會發現結果如下:

      ?

    1 2 3 4 5 6 7 8 9 [root@EVA ~]# ps -f   UID PID PPID C STIME TTY TIME CMD   root 11594 11591 0 19:54 pts/0 00:00:00 -bash   root 11614 11594 0 19:54 pts/0 00:00:00 mysql –uksharpdabu -px xxxxx   root 11616 11594 0 19:54 pts/0 00:00:00 ps -f

      密碼參數值變成了星號,不可見,但是,如果你kill的時候,還是能看到你的密碼參數值。

      第二種:使用一個 -p 或者 --password 選項(後面不指定密碼),在這種情況下,客戶端程序請求來自終端的密碼:

      ?

    1 shell>mysql -u ksharp -p da_name

      ?

    1 Enter password:*********

      因為它對其他用戶不可見,與在命令行指定相比,這樣登陸mysql服務器會更加安全。但是,這個只能用於交互式運行程序,我們大部分情況下都是非交互的運行一個腳本調用客戶端,就不能使用這種方法了。在某些系統中,甚至會發現腳本的第一行被錯誤地讀並解釋為我們的mysql登陸密碼。

      第三種:在一個配置文件中存儲你的密碼,例如,在Unix中,可以在主目錄的“.my.cnf”文件中[client]節列出你的密碼。

      舉例:

      ?

    1 2 3 [client]   password=your_pass

      當然,如果你在“.my.cnf”裡存儲了密碼,就一定要保管好這個文件,除了自己本人,絕不能讓其他人能訪問該文件。保證文件的訪問模式是:400或600。

      使用如下命令:

      ?

    1 shell>chmod 600 .my.cnf

      附上在Unix中,MySQL程序讀取啟動選項的文件列表:

    20157194656707.jpg (624×199)

      MYSQL_HOME是一個環境變量,包含服務器相關的my.cnf文件駐留的目錄路徑。

      如果未設置MYSQL_HOME,並且DATADIR中有一個my.cnf文件,BASEDIR中沒有my.cnf文件,mysqld_safe將MYSQL_HOME設置為DATADIR。否則,如果未設置MYSQL_HOME並且在DATADIR中沒有my.cnf,則mysqld_safe將MYSQL_HOME設置為BASEDIR。

      典型情況二進制安裝的目錄為/usr/local/mysql/data或源代碼安裝的目錄為/usr/local/var。請注意這是配置時指定的數據目錄的位置,而不是 mysqld啟動時用--datadir指定的。運行時使用--datadir對尋找選項文件的服務器沒有效果,因為服務器在處理命令行參量之前尋找這些選項。

      MySQL按照上述順序尋找選項文件,並讀存在的選項文件。如果你想要使用的某個選項文件不存在,則用明文文本編輯器創建。如果存在多個選項文件,文件中指定的後讀取的選項要優先文件中指定的先讀取的選項。

      注釋:在Unix平台上,MySQL忽略人人可寫的配置文件。這是故意的,是一個安全措施。

      任何可以在運行MySQL程序時在命令行給出的長選項也可以在選項文件中給出。要想列出程序的適用選項,用--help選項運行程序。

      其他系統下的配置文件列表如下,

      在Windows中,MySQL程序從以下文件讀取啟動選項:

    20157194758079.jpg (620×222)

      第四種:在MYSQL_PWD環境變量中存儲密碼

      但是這種指定MySQL密碼的方法是極不安全的,不應該使用。ps的某些版本包括顯示運行進程的環境的選

      項;如果你設定MYSQL_PWD,你的密碼將被運行ps的所有人看見,甚至在沒有這樣一個版本的ps的系統上,也可能被觀察到。

      在Unix上,mysql的客戶端會將執行的命令保存在歷史記錄文件裡。在默認情況下,這個文件被命名為 .mysql_history ,創建在你的home目錄下。密碼作為純文本記錄在如 CREATE USER, GRANT, 和 SET PASSWORD 這些語句裡面。所以如果使用了這些語句,他們就被記錄在這個歷史文件裡。為了保證安全,應該嚴格顯示這個文件的訪問模式,就和對剛才說的 .my.cnf 文件一樣。

      如果你的命令解釋器配置為保持歷史,這些歷史記錄文件,其中將包含在命令行中輸入MySQL的密碼。例如,bash中使用?/.bash_history的。任何這樣的文件應該有一個嚴格的訪問模式。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved