我有问题,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)
。
我真的不明白,因为mysql
和mysqldump
的连接建立应该相同。我可以保证,密码是正确的,因为它是从配置文件中获取的,我已经通过调试来检查。
如果我直接在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]);
...