PHP proc_open - подключение к mysqldump работает, но не к mysqlPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 PHP proc_open - подключение к mysqldump работает, но не к mysql

Сообщение Anonymous »

У меня проблема в том, что 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]);
...


следующий вызов не работает - ОШИБКА 1045 (28000): доступ запрещен для пользователя 'root'@'localhost' (с использованием пароля: ДА).

я действительно этого не понимаю, потому что установление соединения должно быть одинаковым для 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]);
...


Подробнее здесь: https://stackoverflow.com/questions/496 ... t-to-mysql
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»