iT邦幫忙

1

MySQL連線遺失帳秘問題

  • 分享至 

  • xImage

網站是客人以前找別的工程師開發的
我只是接手維護
裡面有不少古老的寫法
資料庫連線用的還是mysql,連mysqli都不是
但是網站龐大,只能盡量修修補補,不太可能對其進行徹底翻新

問題是這樣的
由於網站內容,該網站會在深夜達到流量巔峰
最近客戶反應,網站會出現錯誤訊息
看了一下是資料連線失敗的訊息
於是添加失敗時寫入錯誤訊息到文字檔中

查看後發現錯誤訊息大部分如下:
Error Code: 1045
Error Message: Access denied for user ''@'localhost' (using password: NO)

??????
帳號密碼變成空白??
我確定資料庫的帳密是正確的,而且出錯的部分平常開啟也都是正常的
可以確定的是同一秒會出現多筆錯誤紀錄
看起來好像是太多人同時瀏覽出現的問題
仔細找一下
果然在密密麻麻的紀錄中找到
Error Code: 1040
Error Message: Too many connections

想請教,如果連線數量超過上限,會導致上述的帳密錯誤的發生嗎?
除了調整連線數和timeout秒數外,有甚麼其他方法可以避免類似的情況發生嗎?

另外,根據Google到的資訊顯示,PHP在頁面執行完成後,會自動切斷mysql的連線,所以沒有特意使用mysql_close()的必要,請問是這樣嗎?

迷路 iT邦新手 1 級 ‧ 2023-11-14 16:56:33 檢舉
主機商協助調整連線上限數量後
上面兩個錯誤訊息就沒有出現了
現在的錯誤訊息反而變成
Error Code: 2006
Error Message: MySQL server has gone away
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
WUcheap
iT邦研究生 5 級 ‧ 2023-11-13 10:55:15
最佳解答

雖然我對MYSQL不熟,但我覺得當初設計MYSQL的工程師不太會有一個Error Code產生另一個Error Code的設計出現,但軟體有可能(因為是不同設計師去開發的會有情境上的誤解)

Error Code: 1045
Error Message: Access denied for user ''@'localhost' (using password: NO)

using password: NO 應該是不輸入密码,而不是帳號密碼變成空白
而且Access user怎麼會有''空白的? (''@'localhost')

是否能檢視是哪個FUNCTION出現此錯誤的,再下一步看看是程式問題還是有特殊行為

迷路 iT邦新手 1 級 ‧ 2023-11-14 16:55:07 檢舉

這邊的紀錄是mysql_query()的錯誤紀錄

$result = mysql_query($sql);
if(!$result){
	$error_message = mysql_error();
	$error_code = mysql_errno();
	file_put_contents('dberror.txt', date("Y-m-d H:i:s").PHP_EOL."SQL: ".$sql.PHP_EOL."Error Code: ".$error_code.PHP_EOL."Error Message: ".$error_message.PHP_EOL.PHP_EOL, FILE_APPEND);
	die('Something is wrong! Please, wait a minute and refresh.');
}

但是連線function是固定的,而且每頁都有

迷路 iT邦新手 1 級 ‧ 2023-11-30 17:35:01 檢舉

主機商調整設定後
原本的錯誤訊息就沒有再出現了
之後出現的錯誤訊息就屬於需要修正程式的部分
感謝

WUcheap iT邦研究生 5 級 ‧ 2023-12-01 15:50:07 檢舉

肯回饋資訊,推推~

1
ak02
iT邦研究生 1 級 ‧ 2023-11-09 06:28:17

是不會有這狀況發生
深夜達到流量巔峰
八九成是被攻擊了
查一下記綠檔應該是會有吧
該網站應該沒有類似waf機制吧
小心被偷資料

迷路 iT邦新手 1 級 ‧ 2023-11-09 15:07:22 檢舉

這網站十幾年來都是深夜達到流量巔峰
網站的成交時間大多也都是在深夜
這跟網站販售的商品有關,被外人看到容易社死
從記錄檔上倒是沒有看到注入攻擊之類的紀錄
感謝提醒駭客的可能性

我要發表回答

立即登入回答