У меня проблема в том, что mysql не позволяет мне подключаться в одном случае, но в другом это делает.
я использую proc_open
подключиться к MySQL через mysqldump
введите команду и введите пароль через канал.
Интересно, что этот вызов работает, как ожидалось, тогда как другой не ….
$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
, Я могу заверить, что пароль правильный, потому что он получен из файла конфигурации, и я уже проверил отладку.
если я выполняю ту же команду непосредственно в оболочке, у меня нет проблем с подключением, введя пароль. но через 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]);
...
Задача ещё не решена.
Других решений пока нет …