mysql安裝調試完畢,正式投入運行后,馬上進行了mysql備份任務的生成。結果第二天一看,并沒有能夠如愿地生成備份文件。
馬上開始查找原因。首先在mysql administrator里立即運行備份任務,沒有問題,備份文件很快就生成了。但備份任務就是不能正確執行。
在事件查看器里發現了mysql的錯誤日志,root@localhost(password: no)access denied, error number: 1045。
奇怪,root@localhost無法登錄數據庫?可是登錄mysql administrator,并且在里面單獨運行backup都是正常的啊。
冷靜一下,在windows控制面板的計劃任務里,找到數據庫備份的計劃任務(Mysql5.X的備份計劃實際上是生成了一個windows的計劃任務,執行其設置好的腳本),查看了一下腳本,并沒有什么問題。
再仔細研究了一下,發現問題應該是在password:no上,相當于試圖不提供密碼而使用root@localhost進行備份,所以出錯了。那么如何改正呢。
最后發現問題是在;mysql_user_connection.xml里。這個文件里包含了mysql登錄用的別名信息。結果不知道是什么原因這個文件里相同的別名出現了兩次,第一次的配置里密碼為空,而第二次的配置是正確的。
<last_connection>2</last_connection>
<password_storage_type>3</password_storage_type>
<user_connection>
<connection_name></connection_name>
<username>root</username>
<hostname>localhost</hostname>
<port>3306</port>
<schema></schema>
<advanced_options/>
<storage_path></storage_path>
<notes></notes>
<connection_type>0</connection_type>
<storage_type>2</storage_type>
<password_storage_type>3</password_storage_type>
<password/>
</user_connection>
<user_connection>
<connection_name>proddb</connection_name>
<username>root</username>
<hostname>localhost</hostname>
<port>3306</port>
<schema>message</schema>
<advanced_options/>
<storage_path></storage_path>
<notes></notes>
<connection_type>0</connection_type>
<storage_type>2</storage_type>
<password_storage_type>3</password_storage_type>
<password/>
</user_connection>
<user_connection>
<connection_name>proddb</connection_name>
<username>root</username>
<hostname>localhost</hostname>
<port>3306</port>
<schema>message</schema>
<advanced_options/>
<storage_path></storage_path>
<notes></notes>
<connection_type>0</connection_type>
<storage_type>1</storage_type>
<password_storage_type>3</password_storage_type>
<password>9D203859E</password>
</user_connection>
而登錄mysql administrator時,根據last_connection的值,使用的是proddb的第二個配置。所以可以正常登錄,而且在里面執行腳本,備 份都沒有問題,而windows執行計劃任務時,通過別名proddb在mysql_user_connection.xml中查找,找到的是第一個,其 中沒有密碼信息,所以報錯。
問題找到了,解決就容易了,刪除mysql_user_connection.xml中的proddb的第一個配置。備份計劃任務果然能夠正確地執行了。