PHP proc_open - 连接到mysqldump工作,但不是mysql

时间:2018-04-02 22:01:53

标签: php mysql connection background-process

我有问题,mysql不允许我在一个案例中连接,但在另一个案例中它确实连接。

我使用proc_open通过mysqldump命令连接到mysql并通过管道传递密码。

有趣的是,这个调用按预期工作,而另一个调用没有....

$command = "mysqldump --no-data -h 127.0.0.1 -u root -p dbname > /var/www/html/dump.sql"
$process = proc_open($command, [
    0 => ["pipe", "r"],
    1 => ["pipe", "w"],
    2 => ["pipe", "w"]
], $pipes);

if (is_resource($process))
{
    fwrite($pipes[0], $this->password);
    fclose($pipes[0]);
    ...

下一个电话不起作用 - ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

我真的不明白,因为mysqlmysqldump的连接建立应该相同。我可以保证,密码是正确的,因为它是从配置文件中获取的,我已经通过调试来检查。

如果我直接在shell上执行相同的命令,输入密码就不会有连接问题。但是通过php它不起作用。

$command = "mysql -h 127.0.0.1 -u root -p -D dbname < /var/www/html/dump.sql"
$process = proc_open($command, [
    0 => ["pipe", "r"],
    1 => ["pipe", "w"],
    2 => ["pipe", "w"]
], $pipes);

if (is_resource($process))
{
    fwrite($pipes[0], $this->password);
    fclose($pipes[0]);
    ...

0 个答案:

没有答案