解决方案1 - 为每个mysqldump调用提供正确的配置文件
这更像是一个解决方法,但它可以让您达到所需的结果。只需使用提供的信息从CLI获取MySQL表的转储 - 基本上只是复制和粘贴:
从日志中可以看出,mysqldump具有参数--defaults-file。该文件可以包含连接凭据,例如密码。显然,MySQLWorkbench没有使用此文件提供密码(“using password: NO”)。
因此,只需创建一个名为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文件 - 同时删除“Running:”信息以及您已在database.cnf中提供的每个参数:
mysqldump.exe --defaults-extra-file="c:\temp\database.cnf" --routines --events --no-data "test"
然后打开一个Shell,进入你的MySQLWorkbench文件夹并运行命令,例如:
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文件中的信息放入其中一个位置,并运行mysqldump命令,而无需使用--defaults-file参数。
解决方案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