簡體   English   中英

如何在Node.js中提供Spawn Child_Process的密碼

[英]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.

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