一、Can’t connect to MySQL server on ‘localhost’ (10061)
成都創(chuàng)新互聯(lián)公司長(zhǎng)期為上千多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為晉寧企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè),晉寧網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
翻譯:不能連接到 localhost 上的mysql
分析:這說明“l(fā)ocalhost”計(jì)算機(jī)是存在的,但在這臺(tái)機(jī)器上卻沒提供MySQL服務(wù)。
需要啟動(dòng)這臺(tái)機(jī)器上的MySQL服務(wù),如果機(jī)子負(fù)載太高沒空相應(yīng)請(qǐng)求也會(huì)產(chǎn)生這個(gè)錯(cuò)誤。
解決:既然沒有啟動(dòng)那就去啟動(dòng)這臺(tái)機(jī)子的mysql。如果啟動(dòng)不成功,多數(shù)是因?yàn)槟愕膍y.ini配置的有問題。重新配置其即可。
如果覺得mysql負(fù)載異常,可以到mysql/bin 的目錄下執(zhí)行mysqladmin -uroot -p123 processlist來(lái)查看mysql當(dāng)前的進(jìn)程。
二、Unknown MySQL Server Host ‘localhosadst’ (11001)
翻譯:未知的MySQL服務(wù)器 localhosadst
分析:服務(wù)器 localhosasdst 不存在。或者根本無(wú)法連接
解決:仔細(xì)檢查自己論壇下面的 ./config.inc.php 找到$dbhost重新設(shè)置為正確的mysql 服務(wù)器地址。
三、Access denied for user: ‘roota@localhost’ (Using password: YES)
翻譯:用戶 roota 訪問 localhost 被拒絕(沒有允許通過)
分析:造成這個(gè)錯(cuò)誤一般數(shù)據(jù)庫(kù)用戶名和密碼相對(duì)mysql服務(wù)器不正確
解決:仔細(xì)檢查自己論壇下面的 ./config.inc.php 找到$dbuser、$dbpw核實(shí)后重新設(shè)置保存即可。
1.排除網(wǎng)絡(luò)或防火墻問題
先看是否能ping通遠(yuǎn)程服務(wù)器,ping 192.168.1.211,如果不可以就是網(wǎng)絡(luò)問題。然后,檢查端口是否被防火墻擋住了,telnet 192.168.1.211 3306,如果連接失敗,配置防火墻。
配置防火墻,開啟3306端口
vi /etc/sysconfig/iptables
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(允許3306端口通過防火墻)
/etc/init.d/iptables restart(重啟防火墻使配置生效)
2.檢查MySQL配置
如果開啟了防火墻,telnet還是失敗,通過netstat查看3306的端口狀態(tài):
netstat -apn|grep 3306
tcp6 0 0 127.0.0.1:3306 :::* LISTEN 13524/mysqld
注意地方,這說明3306被綁定到了本地。檢查一下my.cnf的配置,這里可以配置綁定ip地址。
bind-address=addr
不配置或者IP配置為0.0.0.0,表示監(jiān)聽所有客戶端連接。
ps:我開啟3306端口,并且檢查MySQL配置之后,telent仍然失敗,但是在本機(jī)telnet是ok的,再三確認(rèn)了配置沒有問題。后來(lái)跟我們的ucloud賬號(hào)管理員提了一下,才知道ucloud管理后臺(tái)也需要開啟3306端口,用云服務(wù)器的留意這個(gè)。
3.檢查用戶訪問權(quán)限
MySQL建用戶的時(shí)候會(huì)指定一個(gè)host,默認(rèn)是127.0.0.1/localhost,那么這個(gè)用戶就只能本機(jī)訪問,其它機(jī)器用這個(gè)用戶帳號(hào)訪問會(huì)提示沒有權(quán)限,host改為%,表示允許所有機(jī)器訪問。
最后,別忘了重啟mysql使配置生效。
# /etc/init.d/mysql restart
望采納
MySQL數(shù)據(jù)庫(kù) Too many connections
出現(xiàn)這種錯(cuò)誤明顯就是 mysql_connect 之后忘記 mysql_close;
當(dāng)大量的connect之后,就會(huì)出現(xiàn)Too many connections的錯(cuò)誤,mysql默認(rèn)的連接為100個(gè),而什么情況下會(huì)出現(xiàn)這種錯(cuò)誤呢?
正常的mysql_connect 之后調(diào)用 mysql_close()關(guān)閉連接
但在連接錯(cuò)誤時(shí),會(huì)者mysql_real_query()出現(xiàn)錯(cuò)誤退出時(shí),可能忘記mysql_close();
所以在程序return 之前一定要判斷是否close(),最穩(wěn)妥的方法就是在寫任何函數(shù)時(shí)都只有一個(gè)出口!
還有可以通過修改mysql配置文件來(lái)加大允許連接的數(shù)量!
有時(shí)你的服務(wù)器是經(jīng)常出現(xiàn)這樣的錯(cuò)誤呢:
錯(cuò)誤信息如下:
Can not connect to MySQL server
Error: Too many connections
Errno.: 1040
Similar error report has beed dispatched to administrator before.
從官方文檔知道Linux上面編譯安裝的mysql默認(rèn)的連接為100個(gè)
文檔:
mysql官方告訴我們需要修改max_connections的值,那么我們?cè)趺慈バ薷哪??有兩種方法
1、修改配置文件文件
修改/etc/my.cnf這個(gè)文件,在[mysqld] 中新增max_connections=N,如果你沒有這個(gè)文件請(qǐng)從編譯源碼中的support-files文件夾中復(fù)制你所需要的*.cnf文件為到 /etc/my.cnf。我使用的是my-medium.cnf,中型服務(wù)器配置。例如我的[mysqld]的內(nèi)容如下
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer = 160M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
max_connections=1000
由于對(duì)mysql還不是很熟悉,所以很多參數(shù)沒有修改。哈哈。。
2、非使用mysqld腳本自動(dòng)啟動(dòng)的用戶。
修改MYSQLHOME/bin/mysqldsafe文件例如:/usr/local/mysql/bin/mysqldsafe這個(gè)文件grep?n‘maxconnection′
MYSQLHOME/bin/mysqldsafe文件例如:/usr/local/mysql/bin/mysqldsafe這個(gè)文件grep?n‘maxconnection′MYSQL_HOME/bin/mysqld_safe
修改對(duì)應(yīng)行號(hào)的max_connections參數(shù)值
3、服務(wù)器登錄mysql : mysql -u root -p
百分之九十進(jìn)不去,進(jìn)不去的執(zhí)行重啟命令 :/etc/init.d/mysql restart(centos系統(tǒng))
此時(shí)重啟mysql就能連接mysql了,如果還有時(shí)間,可以繼續(xù)下一步,治病要治本
打開配置文件 添加一下配置 vi /etc/my.cnf
wait_timeout = 600
interactive_timeout = 600
再次重啟mysql即可
原理解答
mysql 默認(rèn)100 連接數(shù),超過則連不上,實(shí)際工作的連接數(shù)遠(yuǎn)遠(yuǎn)沒有100,大部分在sleep
所以要么增大連接數(shù),要么殺掉無(wú)用連接,推薦后者。
mysql連接數(shù)據(jù)庫(kù)時(shí)報(bào)2003錯(cuò)誤,是設(shè)置錯(cuò)誤造成的,解決方法如下:
1、首先,在電腦桌面鼠標(biāo)點(diǎn)擊開始菜單。
2、通過左下角的搜索欄,輸入服務(wù)字樣,選擇“服務(wù)”應(yīng)用,打開服務(wù)面板。
3、或者通過鍵盤上的win+R鍵打開運(yùn)行,輸入services.msc打開服務(wù)面板。
4、然后在服務(wù)面板中找到MySQL56,選中后單擊右鍵點(diǎn)擊啟動(dòng)此服務(wù),這里的MySQL就在主界面,所以之直接啟動(dòng)即可。
5、最后,重新啟動(dòng)MySQL程序,連接數(shù)據(jù)庫(kù)即可。關(guān)閉服務(wù)應(yīng)用,打開MySQL,關(guān)閉錯(cuò)誤代碼提示,輸入賬號(hào)密碼重新與數(shù)據(jù)庫(kù)建立連接,然后就能打開數(shù)據(jù)庫(kù)程序了。
連接mysql錯(cuò)誤2013是設(shè)置錯(cuò)誤造成的,解決方法為:
1、回到電腦桌面,找到我的電腦點(diǎn)擊右鍵。找到管理選項(xiàng)雙擊。
2、點(diǎn)擊服務(wù)和應(yīng)用程序。
3、點(diǎn)擊服務(wù)。
4、找到MySql。發(fā)現(xiàn)描述項(xiàng)為空。雙擊。
5、點(diǎn)擊啟動(dòng),再次打開MySql連接,就能連接成功了。
一、mysqld 進(jìn)程沒有正常運(yùn)行遇到這種情況首先到服務(wù)器上看看 mysqld 進(jìn)程是否活著,采用的命令:
二、客戶端不能和進(jìn)程 mysqld 通信如果 MySQL 服務(wù)器上的 mysqld 進(jìn)程運(yùn)行正常,我們?cè)倏纯纯蛻舳四懿荒芎?mysqld 進(jìn)行通信,使用下面的命令進(jìn)行網(wǎng)絡(luò)連通的測(cè)試:telnet localhost 3306
如果本地能通,再到客戶端的機(jī)器上把 localhost 換成 MySQL 服務(wù)器的 ip 地址進(jìn)行測(cè)試。如果不能通,通常有兩種原因,一種原因是 OS 或網(wǎng)絡(luò)的問題,或者是防火墻;另一種原因是 mysqld 自身根本沒有偵聽客戶端的連接請(qǐng)求, mysqld 啟動(dòng)后對(duì)于客戶端的偵聽是分三種情況。
第一種情況
是使用參數(shù) --skip-networking 跳過偵聽客戶端的網(wǎng)絡(luò)連接,用下面的命令我們可以看到 MySQL 根本沒有偵聽 3306 端口。
第二種情況
使用參數(shù) --bind-address 后面增加對(duì)客戶端訪問 IP 地址的限制,例如只偵聽本地的連接
三、賬戶密碼的問題最后一種情況是賬戶密碼的問題,應(yīng)付這種情況我們有個(gè)有力的工具就是查看 MySQL 的 error log, error log 記載信息的詳細(xì)程度上由參數(shù) --log-error-verbosity 進(jìn)行控制的