[英]How to provide the password for Spawn Child_Process in Node.js
我正在嘗試使用mysqldump創建我的應用程序的mysql備份。 生成子進程似乎無法寫入密碼。 這些都是到目前為止我嘗試過的所有事情。
var spawn = require('child_process').spawn("mysqldump",
["-u", "Username",
"DBName",
">", "./Backup/DB_Backup.sql",
"-p", "Password"]);
spawn.stdin.write("P");
spawn.stdin.write("a");
spawn.stdin.write("s");
spawn.stdin.write("s");
spawn.stdin.write("w");
spawn.stdin.write("o");
spawn.stdin.write("r");
spawn.stdin.write("d");
spawn.stdin.write("\n");
spawn.stdin.write("Password\n");
spawn.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
spawn.stdin.write("Password\n");
});
spawn.stderr.on('data', (data) => {
console.log(`stderr: ${data}`);
});
spawn.on('close', (code) => {
console.log(`child process exited with code ${code}`);
});
這個問題似乎很重復,但是沒有一個答案對我有幫助。
在"-pPassword"
上替換"-p", "Password"
"-pPassword"
例:
const { spawn } = require('child_process');
const mysqldump = spawn('mysqldump', [
'-u', db.user,
'-p' + db.password,
db.database
]);
最好的方法是:
const DATABASE_NAME = 'test'
let wstream = fs.createWriteStream(`./backup/${DATABASE_NAME}.sql`);
let mysqldump = spawn('mysqldump', [
`--host=${process.env.MYSQL_HOST}`,
`--port=${process.env.MYSQL_PORT}`,
`--user=${process.env.MYSQL_USER}`,
`--password=${process.env.MYSQL_PASSWORD}`,
DATABASE_NAME
])
mysqldump
.stdout
.pipe(wstream)
.on('finish', function () {
console.log('Completed')
})
.on('error', function (err) {
console.error(err)
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.