Can''t connect to MySQL server on localhost (10061)解決方法
2024-07-24 13:00:54
供稿:網(wǎng)友
 
首先檢查MySQL 服務(wù)沒有啟動》如果沒有啟動,則要啟動這個服務(wù)。 
昨天,重起服務(wù)器后出現(xiàn)MySQL 'localhost' (10061)錯誤,開始以為是因為數(shù)據(jù)庫鏈接打開過多,數(shù)據(jù)庫資源耗盡的緣故,但是重啟服務(wù)器以后,仍舊出現(xiàn)問題,于是在網(wǎng)上查找解決方法。大體如下: 
解決辦法: 
第一步 
刪除c:/windows/下面的my.ini 
第二步 
打開c:/mysql/bin/winmysqladmin.exe 輸入用戶名 和密碼 
第三步 在dos下 輸入 mysqld-nt -remove 刪除服務(wù) 
在接著輸入 mysqld-nt -install 
第四步 輸入mysql 啟動成功。 
其它可參考的方法: 
1.看看hosts文件中l(wèi)ocalhost是不是指向127.0.0.1 
2.如果是沒啟動mysql服務(wù),則可運行net start mysql。 
3.一些相關(guān)命令: 
mysqld-nt --install #啟動Mysql 
mysql #運行Mysql 
mysql -h ipAddress -u username -p 
或者:直接去bin里點mysqld.exe或mysqld-nt.exe,看下它的進程能否正常運行,如不行,再去控制面板,服務(wù)里去啟動它,看下是什么錯誤。如果不行,就在添加刪除里刪去mysql,然后再重裝mysql,一般都能解決問題,可以在安裝前備份一下DATA。 
Error: Can't connect to MySQL server on 'localhost' (10061) 
Errno.: 2003 
錯誤編號:2003 
問題分析: 
無法連接到 MySQL 服務(wù)器,可能的情況為: 
1、MySQL 服務(wù)沒有啟動,一般是在異常的情況下 MySQL 無法啟動導(dǎo)致的,比如無可用的磁盤空間,my.ini 里 MySQL 的 basedir 路徑設(shè)置錯誤等; 
2、MySQL 服務(wù)器資源緊張,導(dǎo)致無法連接。 
解決方法: 
1、如果你是虛擬主機用戶(購買的空間),則聯(lián)系空間商檢查 MySQL 是否正常啟動,并確認(rèn) MySQL 的配置信息(是否為 localhost); 
2、如果你是獨立主機用戶(擁有管理主機權(quán)限),則按下面步驟檢查: 
1)檢查磁盤空間是否還有剩余可用空間,盡量保持有足夠的磁盤空間可用。 
2)檢查 my.ini 里的 basedir (MySQL 安裝地址) 和 datadir (數(shù)據(jù)目錄存放地址)等參數(shù)設(shè)置是否正確,然后重新啟動下 MySQL 服務(wù)。 
還有一種方法是將服務(wù)器的windows補丁。 
微軟9月9日發(fā)布了TCP/IP更新補丁(KB967723),如果服務(wù)器開啟自動更新或者有自動更新軟件下載更新了這個補丁,那么就會出現(xiàn)這個問題。 
有人可能會問,為什么9號出現(xiàn)的補丁,到現(xiàn)在才發(fā)現(xiàn)問題? 
大家都知道,服務(wù)器不是每天都重啟的,有的服務(wù)器可能一個月或者一年半載重啟一次,有的可能在9月9日以后重啟過服務(wù)器,所以補丁生效了(我個人這么認(rèn)為)。 
補丁卸載方法:登錄服務(wù)器,進入控制面板 --- 添加和刪除程序 -- (勾選上方的“顯示更新”) 
在里面可以看到更新的KB967723這個補丁,然后就想卸載普通軟件一樣卸載,卸載中會提示你,如果卸載可能導(dǎo)致程序運行出錯,沒關(guān)系,選擇“是”,繼續(xù)卸載。 
卸載完成后程序服務(wù)器,一切正常! 
至于該補丁修補什么漏洞,卸載后是否會出現(xiàn)服務(wù)器安全隱患,這個先不說,要MYSQL正常運行,臨時的解決辦法只有如此。 
還有種情況下,你可以這樣解決 
Discuz! info: Can not connect to MySQL server 
Time: 2007-11-13 6:25pm 
Script: /bbs/index.php 
Error: Can't connect to MySQL server on 'localhost' (10061) 
Errno.: 2003 
Similar error report has beed dispatched to administrator before. 
正常情況下原因如下: 
網(wǎng)站論壇訪問量過大,數(shù)據(jù)庫連接超過最大連接數(shù).MYSQL數(shù)據(jù)庫服務(wù)停止了. 
解決方法(針對WIN系統(tǒng)): 
1, 首先到系統(tǒng)服務(wù)里面找到MYSQL服務(wù)并啟動MYSQL服務(wù). 
2, 到MYSQL安裝目錄找到MY.INI文件,打開MY.INI查找max_connections 修改連接數(shù)為1000 重啟IIS與MYSQL服務(wù).
window 下 
命令行下輸入: 
>cd E:/mysql/bin 
>mysqladmin -u root password 你的密碼 
>mysql -u root -p 
Enter password: 你的密碼 
便可以 
、、、、、、、、、、、、、、、、、 
找到了根本原因,在此涼一下: 
導(dǎo)致此問題的根源在:因為給mysql的root設(shè)置了密碼,而不是最初安裝好時的密碼為空,所以使用 
mysqladmin version這樣子不行了,必須這樣子:mysqladmin -uroot -p version,回車后按照提示要求輸入 
root密碼即可成功運行命令。 
第一種方法其實就是在不知道root密碼的情況下的一種解決辦法,那樣子啟動不用密碼即可進mysql 
里面并進行root密碼的修改,解決忘記了root密碼的問題。 
輸入命令“mysqladmin -u root password 你的密碼”作用是修改root用戶的密碼,這條命令能夠不經(jīng) 
提示輸入原密碼而成功執(zhí)行,也說明了原密碼是空。之后使用修改后的密碼自然能夠成功登錄。 
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。怎么更改密碼? 
首先要聲明一點,大部分情況下,修改MySQL是需要有mysql里的root權(quán)限的,所以一般用戶無法更改密碼 
,除非請求管理員。    
方法一 
  使用phpmyadmin,這是最簡單的了,修改mysql庫的user表, 
  不過別忘了使用PASSWORD函數(shù)。 
  方法二 
  使用mysqladmin,這是前面聲明的一個特例。 
  mysqladmin -u root -p password mypasswd 
  輸入這個命令后,需要輸入root的原密碼,然后root的密碼將改為mypasswd。 
  把命令里的root改為你的用戶名,你就可以改你自己的密碼了。 
  當(dāng)然如果你的mysqladmin連接不上mysql server,或者你沒有辦法執(zhí)行mysqladmin, 
  那么這種方法就是無效的。 
  而且mysqladmin無法把密碼清空。 
  下面的方法都在mysql提示符下使用,且必須有mysql的root權(quán)限: 
  方法三 
  mysql> INSERT INTO mysql.user (Host,User,Password) 
  VALUES('%','jeffrey',PASSWORD('biscuit')); 
  mysql> FLUSH PRIVILEGES 
  確切地說這是在增加一個用戶,用戶名為jeffrey,密碼為biscuit。 
  在《mysql中文參考手冊》里有這個例子,所以我也就寫出來了。 
  注意要使用PASSWORD函數(shù),然后還要使用FLUSH PRIVILEGES。 
  方法四 
  和方法三一樣,只是使用了REPLACE語句 
  mysql> REPLACE INTO mysql.user (Host,User,Password) 
  VALUES('%','jeffrey',PASSWORD('biscuit')); 
  mysql> FLUSH PRIVILEGES 
  方法五 
  使用SET PASSWORD語句, 
  mysql> SET PASSWORD FOR " = PASSWORD('biscuit'); 
  擬也必須使用PASSWORD()函數(shù), 
  但是不需要使用FLUSH PRIVILEGES。 
  方法六 
  使用GRANT ... IDENTIFIED BY語句 
  mysql> GRANT USAGE ON *.* TO " IDENTIFIED BY 'biscuit'; 
  這里PASSWORD()函數(shù)是不必要的,也不需要使用FLUSH PRIVILEGES。 
  注意: PASSWORD() [不是]以在Unix口令加密的同樣方法施行口令加密。 
  MySQL 忘記口令的解決辦法 
  如果 MySQL 正在運行,首先殺之: killall -TERM mysqld。 
  啟動 MySQL :bin/safe_mysqld --skip-grant-tables & 
  就可以不需要密碼就進入 MySQL 了。 
  然后就是 
  >use mysql 
  >update user set password=password("new_pass") where user="root"; 
  >flush privileges; 
  重新殺 MySQL ,用正常方法啟動 MySQL 。 
linux下 
方法一: 
# /etc/init.d/mysql stop 
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking & 
# mysql -u root mysql 
mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root'; 
mysql> FLUSH PRIVILEGES; 
mysql> quit 
# /etc/init.d/mysql restart 
# mysql -uroot -p 
Enter password: <輸入新設(shè)的密碼newpassword> 
mysql> 
方法二: 
直接使用/etc/mysql/debian.cnf文件中[client]節(jié)提供的用戶名和密碼: 
# mysql -udebian-sys-maint -p 
Enter password: <輸入[client]節(jié)的密碼> 
mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root'; 
mysql> FLUSH PRIVILEGES; 
mysql> quit 
# mysql -uroot -p 
Enter password: <輸入新設(shè)的密碼newpassword> 
mysql> 
方法三: 
# mysql -uroot -p 
Enter password: <輸入/etc/mysql/debian.cnf文件中[client]節(jié)提供的密碼>