mysql安裝調(diào)試完畢,正式投入運(yùn)行后,馬上進(jìn)行了mysql備份任務(wù)的生成。結(jié)果第二天一看,并沒有能夠如愿地生成備份文件。
馬上開始查找原因。首先在mysql administrator里立即運(yùn)行備份任務(wù),沒有問題,備份文件很快就生成了。但備份任務(wù)就是不能正確執(zhí)行。
在事件查看器里發(fā)現(xiàn)了mysql的錯(cuò)誤日志,root@localhost(password: no)access denied, error number: 1045。
奇怪,root@localhost無法登錄數(shù)據(jù)庫?可是登錄mysql administrator,并且在里面單獨(dú)運(yùn)行backup都是正常的啊。
冷靜一下,在windows控制面板的計(jì)劃任務(wù)里,找到數(shù)據(jù)庫備份的計(jì)劃任務(wù)(Mysql5.X的備份計(jì)劃實(shí)際上是生成了一個(gè)windows的計(jì)劃任務(wù),執(zhí)行其設(shè)置好的腳本),查看了一下腳本,并沒有什么問題。
再仔細(xì)研究了一下,發(fā)現(xiàn)問題應(yīng)該是在password:no上,相當(dāng)于試圖不提供密碼而使用root@localhost進(jìn)行備份,所以出錯(cuò)了。那么如何改正呢。
最后發(fā)現(xiàn)問題是在;mysql_user_connection.xml里。這個(gè)文件里包含了mysql登錄用的別名信息。結(jié)果不知道是什么原因這個(gè)文件里相同的別名出現(xiàn)了兩次,第一次的配置里密碼為空,而第二次的配置是正確的。
<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時(shí),根據(jù)last_connection的值,使用的是proddb的第二個(gè)配置。所以可以正常登錄,而且在里面執(zhí)行腳本,備 份都沒有問題,而windows執(zhí)行計(jì)劃任務(wù)時(shí),通過別名proddb在mysql_user_connection.xml中查找,找到的是第一個(gè),其 中沒有密碼信息,所以報(bào)錯(cuò)。
問題找到了,解決就容易了,刪除mysql_user_connection.xml中的proddb的第一個(gè)配置。備份計(jì)劃任務(wù)果然能夠正確地執(zhí)行了。