# 如何解決Linux PHP連不上MySQL數據庫問題
## 問題現象
在Linux服務器上運行PHP程序時,常會遇到無法連接MySQL數據庫的情況,典型報錯包括:
Warning: mysqli_connect(): (HY000/2002): Connection refused
或
Access denied for user ‘username’@‘localhost’ (using password: YES)
## 常見原因與解決方案
### 1. MySQL服務未運行
```bash
# 檢查MySQL狀態
systemctl status mysql
# 啟動服務(根據實際服務名可能是mysqld或mariadb)
sudo systemctl start mysql
MySQL默認使用3306端口:
# 檢查端口監聽
netstat -tulnp | grep 3306
# 測試遠程連接(替換為實際IP)
telnet 服務器IP 3306
若未監聽,需檢查my.cnf
配置文件中bind-address
參數:
bind-address = 0.0.0.0 # 允許所有IP連接
-- 登錄MySQL后執行
GRANT ALL PRIVILEGES ON *.* TO '用戶名'@'%' IDENTIFIED BY '密碼';
FLUSH PRIVILEGES;
確保已安裝PHP MySQL擴展:
# 根據PHP版本選擇擴展
sudo apt install php-mysql # PHP7+
sudo yum install php-mysqli # CentOS
# 臨時關閉SELinux
setenforce 0
# 防火墻放行3306
sudo firewall-cmd --add-port=3306/tcp --permanent
sudo firewall-cmd --reload
mysql -u用戶 -p密碼
<?php
$conn = new mysqli("127.0.0.1", "用戶", "密碼", "數據庫");
if ($conn->connect_error) {
die("連接失敗: " . $conn->connect_error);
}
/var/log/php_errors.log
[mysqld]
general_log = 1
general_log_file = /var/log/mysql/queries.log
sudo tcpdump -i any port 3306 -w mysql_debug.pcap
通過以上步驟,90%的連接問題都能得到解決。如仍無法連接,建議檢查MySQL錯誤日志(通常位于/var/log/mysql/error.log
)獲取具體錯誤信息。
“`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。