首页 > 解决方案 > mysqldump mysql 8,在windows服务器上没有命令行密码

问题描述

我想使用每日批处理作业而不在批处理文件中包含密码。

那里有很多 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\Data

您可以在配置文件中包含 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' 的访问被拒绝(使用密码:否) mysqlpump:[错误](11)

转储过程遇到错误,将不会继续。

标签: mysqlwindows

解决方案


但是,我发现解决方案是使用

-defaults-file="C:\ProgramData\MySQL\MySQL 服务器 8.0\my.ini"

2010 年

--这在命令提示符下工作:

 mysqldump  --defaults-file="C:\\ProgramData\\MySQL\\MySQL Server 8.0\\my.ini"  --result-file test003.sql

--result-file 这可以避免任何 utf 和 powershell问题>


推荐阅读