需要在数据库所在的服务器执行;

java文件:
import java.io.BufferedReader;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.util.Scanner;public class ExportDatabase {
        String fileLocation = "/opt/apache-tomcat-8.5.23/mysqlDatabase/";//导出文件的位置
         String fileName="database.sql";//文件名
         String databaseName= "test";//需要导出数据库的数据库名称
         String mysqldumpLocation = "/usr/bin/mysqldump";//dump程序所在的位置
         Scanner scanner = new Scanner(System.in);
         System.out.println("please enter your database account number:");
         String user = scanner.next();//输入账号
         System.out.println("please enter your database password");
         String[] cmds = {"/bin/sh","-c",mysqldumpLocation+" -u"+user+" -p "+databaseName+" > "+fileLocation+fileName};//执行shell脚本
         Process pro = Runtime.getRuntime().exec(cmds);
         pro.waitFor();//执行到这里会提示输入密码
         System.out.println("your file  location is on "+fileLocation+" , name is "+fileName);
       //执行完毕
     }
 } 
如果是shell脚本导出原理也是差不多
#!/bin/bash
 #dump的位置 你需要知道你mysqldump的位置 such as /usr/bin/mysqldump   
 echo "please enter your dumpLocation:"
 read dumpLocation
 #需要导出的数据库名称  
 echo "please enter your databaseName"
 read databaseName
 #你想要导出的位置 such as /opt
 echo "please enter exportLocation"
 read exportLocation
 #导入文件的名字 基本都是XXX.sql
 echo "please enter your file name"
 read fileName
 #数据库账号
 echo "please enter your database account number:"
 read user
 $dumpLocation -u$user -p $databaseName > $exportLocation"/"$fileName
 #执行到这里提示你输入数据库密码
 echo "if not error,your shell is success file location is on"$exportLocation" file name is"
 $fileName#执行完毕