解决方案 1 - 为每个 mysqldump-call 提供正确的配置文件
这更像是一种解决方法,但它会让您获得所需的结果。只需使用提供的信息从 CLI 获取 MySQL 表的转储 - 基本上它只是复制和粘贴:
从日志中可以看到mysqldump有参数--defaults-file。该文件可以并且将包含连接凭据,例如密码。显然 MySQLWorkbench 没有提供该文件的密码(“使用密码:否”)。
因此,只需创建一个名为 database.cnf 的文件并将其放入您的计算机(例如 c:\temp\database.cnf)的某个位置,其中包含如下凭据:
[client]
user=root
password=your-root-password
single-transaction=TRUE
host=localhost
port=3306
default-character-set=utf8
max_allowed_packet=1G
由于这也适用于命令行中的任何其他参数,您还可以添加所有其他内容,例如--single-transaction等。现在获取您的日志文件条目:
Running: mysqldump.exe --defaults-extra-file="c:\users\d_micha\appdata\local\temp\tmpgtwa_m.cnf" --user=root --max_allowed_packet=1G --host=localhost --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --events --no-data "test"
并替换--defaults-extra-file参数以指向您的database.cnf - 同时删除“运行:”信息和您已经在 database.cnf 中提供的每个参数:
mysqldump.exe --defaults-extra-file="c:\temp\database.cnf" --routines --events --no-data "test"
然后打开一个 Shell,转到您的 MySQLWorkbench-Folder 并运行命令,例如:
cd c:\Program Files\MySQL\MySQL Workbench 6.3 CE\
mmysqldump.exe --defaults-extra-file="c:\temp\database.cnf" --routines --events --no-data "test" > c:\Users\user\Downloads\table1.sql
不要忘记将输出路由到文件!
长话短说:使用 CLI 工具 mysqldump,MySQLWorkbench 也是这样做的,但方法不正确。
解决方案 2 - 提供一个全局正确的配置文件
mysqldump还会读取一个全局配置文件,如果它存在于这些位置之一:
- C:\WINDOWS\my.ini
- C:\WINDOWS\my.cnf
- C:\my.ini
- C:\my.cnf
- c:\Program Files\MySQL\my.ini
- c:\Program Files\MySQL\my.cnf
因此,您可以将上述编辑过的 cnf 文件中的信息放到其中一个位置,并在没有--defaults-file -参数的情况下运行 mysqldump-command
解决方案3 只调用不带参数的mysqldump
这可能是最复杂的解决方案: my.cnf 将使用 mysqldump 接受的任何参数。那么为什么不直接使用它来配置你的转储呢?只需将所有参数添加到您的 my.cnf
[client]
user=root
password=secretPassword
single-transaction=TRUE
host=localhost
protocol=tcp
port=3306
default-character-set=utf8
skip-triggers=TRUE
all-databases=TRUE
all-tablespaces=TRUE
现在在shell /命令行上运行mysqldump,不带任何参数,你很好:
cd c:\Program Files\MySQL\MySQL Workbench 6.3 CE\
mysqldump.exe > c:\Users\user\Downloads\dump.sql