3 回答

TA貢獻1847條經驗 獲得超7個贊
一些答案提到將密碼放入配置文件中。
另外,您也可以從腳本中進行操作export MYSQL_PWD=yourverysecretpassword。
與使用配置文件相比,此方法的好處在于,不需要單獨的配置文件即可與腳本保持同步。您只有要維護的腳本。
有沒有缺點給此方法。
該密碼對系統(tǒng)上的其他用戶不可見(如果在命令行上,則將可見)。環(huán)境變量僅對運行mysql命令的用戶和root用戶可見。
任何可以讀取腳本本身的人都可以看到該密碼,因此請確保腳本本身受到保護。這與保護配置文件沒有什么不同。如果要使腳本公開可讀(export MYSQL_PWD=$(cat /root/mysql_password)例如),仍然可以從單獨的文件中獲取密碼。導出變量比構建配置文件要容易得多。
例如,
$ export MYSQL_PWD=$(>&2 read -s -p "Input password (will not echo): "; echo "$REPLY")
$ mysqldump -u root mysql | head
-- MySQL dump 10.13 Distrib 5.6.23, for Linux (x86_64)
--
-- Host: localhost Database: mysql
-- ------------------------------------------------------
-- Server version 5.6.23
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
$ mysqldump -u root mysql | head
-- MySQL dump 10.13 Distrib 5.6.23, for Linux (x86_64)
--
-- Host: localhost Database: mysql
-- ------------------------------------------------------
-- Server version 5.6.23
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
添加回答
舉報