我想使用每日批处理作业而不在批处理文件中包含密码。
那里有很多 Linux 示例。我找不到 Windows 版本。
我的开发机器在 Windows Server 2016 上使用 MySQL 8.0.0.12。 我使用 Windows mysql 安装程序并添加了 Mysql 服务器和 Workbench。
mysqldump 的位置: "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqldump.exe"
https://dev.mysql.com/doc/refman/8.0/en/option-files.html 表 4.1 指定了 8 个可能的位置。表中的最后一个选项优先。
C:\ProgramData\MySQL\MySQL 服务器 8.0\数据
您可以在配置文件中包含 sql 用户名和密码。 现在你在使用 mysqldump 时引用这个文件。 在 Linux 中,配置文件以 .cnf 结尾,在 Windows 中,它们以 .ini 结尾
如果不存在,请将 mysql bin 目录添加到 Windows 路径:C:\Program Files\MySQL\MySQL Server 8.0\bin
我更改了“C:\ProgramData\MySQL\MySQL Server 8.0\Data\my.ini”。
作为第一步,我使用了 root 用户和密码。 all-databases - 这将使 mysqldump 备份所有文件。 我将此部分添加到 .ini 文件的底部。
[mysqldump]
user=root
password=**yourpasswordhere**
all-databases
我认为 mysqldump 会从 my.ini 中获取用户和密码,备份会起作用。
C:\ProgramData\MySQL\MySQL Server 8.0>"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqlpump.exe"
mysqlpump:出现错误:1045:连接到 MySQL 服务器时,用户 'ODBC'@'localhost'(使用密码:NO)的访问被拒绝 mysqlpump: [错误] (11)
转储过程遇到错误,将不会继续。
最佳答案
但是,我发现解决方案是使用
-defaults-file ="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini"
--这在命令提示符下有效:
mysqldump --defaults-file="C:\\ProgramData\\MySQL\\MySQL Server 8.0\\my.ini" --result-file test003.sql
--result-file 这避免了任何 utf 和 powershell issues与 >
关于mysqldump mysql 8,在命令行中没有密码的Windows服务器上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51619360/