2015-06-19 2 views
1

Мне нужно сделать резервные копии базы данных mysql в моем приложении.Как создать mysql dump с Java в системе Linux?

Я запускаю команду в Windows и отлично работает. Это команда:

String executeCmd = mysqldumppath +" -u " + dbUserName + " -p" + dbPassword + " --add-drop-database -B " + dbName + " -r " + filePath; 
Runtime.getRuntime().exec(executeCmd); 

Когда я попробовать эту команду на моем сервере Linux, мне нужно поставить пароль SUDO. Как передать пароль в командной строке?

Я прочитал много решений, но не успел.

+0

Вы запустили его из командной строки в Windows? – MadConan

+2

Вы пытались выполнить программу Java как root? – ryekayo

+0

Вы используете java-код из командной строки? НЕ команда mySQL. Я имею в виду 'java MyClass'. – MadConan

ответ

2

Либо запустить программу Java, как rootsudo) или передать sudo пароль через stdin к sudo (очень незащищенной, практически не безопасный способ осуществить это).

+0

Я использую сервер Glassfish с файлом war war. Должен ли я запускать старую рыбку с помощью команды sudo? –

+1

@ VítorNóbrega Эта информация будет полезна в вашем вопросе. – MadConan

0

Зачем вам вводить пароль при выполнении команды mysqldump с помощью пользователя Glassfish?

Поскольку у вас есть привилегия, выполняющая команду с паролем. Если вы хотите выполнять команды password-less, редактировать использование /etc/sudoers файла visudo, поместить строку в конце концов (при запуске варианты использования GlassFish-сервере glassfish пользователя), например:

glassfish ALL=(All) NOPASSWD: mysqldumppath 

Вы можете также скопировать строку в файл и поместите его в каталог /etc/sudoers.d. Теперь попробуйте снова выполнить команду sudo! Удачи! :-)