簡體   English   中英

是否可以創建用戶而用戶密碼不會以明文形式出現?

[英]Is it possible to create a user without the user's password ever appearing in clear text?

我很好奇是否有一種方法可以創建受密碼保護的用戶,而不允許密碼在表達式中逐字出現或在此過程中的任何時候在命令行中取消屏蔽。

在官方 MySQL 文檔中,提到在命令行上提交未屏蔽的密碼,例如登錄帳戶時,被認為是不安全的:

使用 mysqladmin 設置密碼應該被認為是不安全的。 在某些系統上,您的密碼對系統狀態程序(例如 ps)可見,其他用戶可能會調用這些程序來顯示命令行。 MySQL 客戶端通常在其初始化序列期間用零覆蓋命令行密碼參數。 但是,仍然有一個短暫的時間間隔,在此期間該值是可見的。 此外,在某些系統上,這種覆蓋策略是無效的,密碼對 ps 仍然可見。 (SystemV Unix 系統和其他系統可能會遇到此問題。) 1

這很方便但不安全。 在某些系統上,您的密碼對系統狀態程序(例如 ps)可見,其他用戶可能會調用這些程序來顯示命令行。 MySQL 客戶端通常在其初始化序列期間用零覆蓋命令行密碼參數。 但是,仍然有一個短暫的時間間隔,在此期間該值是可見的。 此外,在某些系統上,這種覆蓋策略是無效的,密碼對 ps 仍然可見。 (SystemV Unix 系統和其他系統可能會遇到此問題。) 2

如果您的操作環境設置為在終端 window 的標題欄中顯示當前命令,則只要命令正在運行,密碼就會一直可見,即使該命令已從 window 內容區域的視圖中滾出。 * 字符表示您輸入密碼的位置。 輸入密碼時不會顯示密碼。 以這種方式輸入密碼比在命令行中指定密碼更安全,因為其他用戶看不到密碼。 但是,這種輸入密碼的方法只適用於交互式運行的程序。 如果您想從非交互式運行的腳本調用客戶端,則沒有機會從鍵盤輸入密碼。 在某些系統上,您甚至可能會發現腳本的第一行被讀取並(錯誤地)解釋為您的密碼。 2個

可以使用由MySQL 配置實用程序創建的加密.mylogin.cnf文件在隱藏密碼的同時登錄帳戶,但在用戶首次登錄之前的某個時間點仍需提交密碼。

我能想到的唯一方法是在表達式中創建沒有密碼的用戶,然后使用mysqladmin設置密碼:

$ sudo mysql -e "CREATE USER someone;"
$ mysqladmin -u someone password
New password: 
Confirm new password: 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM