使用這種方式指定密碼時,文件既可以放在本地,也可以放在集羣上:
使用echo passwd > ~/.passwd,將密碼寫入文件,
chmod 400 ~/.passwd
將密碼文件設置爲當前用戶只讀,防止他人知悉該密碼。
sqoop-list-databases --connect jdbc:mysql://m.mysql.com:3306 --username root --password-file file:///home/user/.passwd
這樣即可訪問mysql,這個地方的file://在沒有配置hdfs路徑的時候可以不加,但如果運行sqoop的服務器在hadoop的core-site.xml中指定了hdfs,那麼必須加上file://,否則會報找不到文件的錯誤。
也可以直接將文件放到hdfs上,以便所有task所在的服務器都可以讀取密碼,制定hdfs中的路徑就可以了,可以不加hdfs://。
如果手動編輯密碼文件,最好在Windows環境下編輯文件,文件只有一行,只包含密碼,不要有其他多餘的空格等字符串。
我測試的時候在Linux上使用vi編輯文件,總是有換行,導致一直錯誤,後來使用windows編輯後成功執行。