Mysql

無法在 MySQL 中使用 –defaults-extra-file 從配置中讀取密碼

  • January 4, 2017

我正在嘗試使用批處理腳本自動備份所有數據庫。密碼是從名為 config.cnf 的配置文件中讀取的。下面是批處理腳本:

@echo off
C:\MySQL\bin\mysqldump.exe --defaults-extra-file=config.cnf -u root --all-databases > bak_%DATE%.sql 2> sql_error.log

config.cnf 的內容:

[mysqldump]
password = mypassword

執行批處理時返回以下錯誤消息:

Could not open required defaults file: config.cnf
Fatal error in defaults handling. Program aborted
mysqldump: Got error: 1045: "Access denied for user 'root'@'127.0.0.1' (using password NO)" when trying to connect

由於某種原因,沒有讀取 config.cnf 並且腳本的執行失敗。我不確定為什麼會這樣。

編輯:數據庫版本是 MySQL 版本 14.16 Distrib 5.2.4 MariaDB。以管理員身份執行批處理腳本仍然會導致相同的錯誤消息,修改配置文件以及將組修改為

$$ client $$. 找到了一個替代解決方案,下面對此進行了回答。

根據MariaDB 知識庫中的Location in Windowsmy.cnf部分,它會在各個位置查找文件。在 Windows 中,我my.cnfC:\my.cnf. 我編輯了這個文件並在下面添加了密碼

$$ client $$團體。 以下命令無需使用-p或 using指定密碼即可工作--defaults-extra-file,因為它使用位於 的配置文件C:\my.cnf

@echo off
C:\MySQL\bin\mysqldump.exe -u root --all-databases > bak_%DATE%.sql 2> sql_error.log

由於權限級別,它看起來像訪問問題。嘗試通過右鍵點擊批處理文件然後選擇以管理員身份執行批處理文件,如果密碼包含特殊字元,請嘗試Run as administrator用 in 包裝密碼,嘗試刪除可能添加的任何額外空間,還請在此處''找到類似問題的更多解決方案:

根據http://dev.mysql.com/doc/refman/5.7/en/option-files.html 中的範例,密碼應如下所示:

[client]
# The following password will be sent to all standard MySQL clients
password="my password"

引用自:https://dba.stackexchange.com/questions/159922