MySQL 作為全球最流行的開源關係型資料庫,憑藉體積小、速度快、總擁有成本低、開源免費等優勢,成為中小型網站首選。本文涵蓋 Windows 下安裝配置、遠程授權避坑、PHP 連接驗證、核心概念解析與 LAMP 架構定位,助您快速建立生產可用的 MySQL 環境。
services.msc 確認 MySQL80 運行中;CMD 執行 mysql -u root -p 登入成功。場景:應用服務器 172.16.100.185 需連接資料庫服務器。
-- 錯誤示範:bash 將 ! 視為歷史擴展 mysql -h 172.16.100.185 -u wubx -pfd52!wubx -bash: !wubx: event not found -- 正確:單引號包裹密碼 mysql -h 172.16.100.185 -u wubx -p'fd52!wubx'
-- 1. 登入資料庫 mysql -u root -p -- 2. 創建用戶並授權 (採用 8.0 語法) CREATE USER 'wubx'@'172.16.100.185' IDENTIFIED BY 'fd52!wubx'; GRANT ALL PRIVILEGES ON wubx.* TO 'wubx'@'172.16.100.185'; FLUSH PRIVILEGES; -- 3. 驗證 SELECT User, Host FROM mysql.user WHERE User='wubx';
關鍵點:
Host='172.16.100.185' 僅允許該 IP;Host='%' 允許任意 IP (生產慎用)。GRANT ... IDENTIFIED BY 隱式創建用戶,8.0 必須顯式 CREATE USER。<?php
$host = '172.16.100.185';
$user = 'wubx';
$pass = 'fd52!wubx';
$db = 'wubx';
$mysqli = new mysqli($host, $user, $pass, $db);
if ($mysqli->connect_errno) {
die("Connect failed: " . $mysqli->connect_error);
}
echo "Connected successfully! Server version: " . $mysqli->server_info;
$mysqli->close();
?>
推薦使用 mysqli 或 PDO (預處理語句防注入),mysql_* 函數已在 PHP 7.0 移除。
| 概念 | 通俗解釋 |
|---|---|
| MySQL | 數據倉庫:存文字、圖片、結構化數據,提供增刪改查 (CRUD) 接口 |
| SQL | 與數據庫對話的標準語言:SELECT 查、INSERT 增、UPDATE 改、DELETE 刪 |
| PHP | 網站開發語言:接收 HTTP 請求 → 調用 MySQL → 返回 HTML/JSON |
| Apache/Nginx | Web 服務器:處理靜態資源、反向代理 PHP-FPM |
| Linux | 作業系統:穩定、免費、生態完善的服務器首選 |
用戶瀏覽器
↓ HTTP
Nginx/Apache (靜態/代理)
↓ FastCGI
PHP-FPM (業務邏輯)
↓ TCP 3306
MySQL (數據持久化)
↓
Linux Kernel (資源調度)
| 維度 | MySQL | SQL Server |
|---|---|---|
| 授權 | 開源免費 (GPL/商業雙授權) | 商業收費 (Core/Server+CAL) |
| 跨平台 | Linux/Windows/macOS 全支援 | Windows/Linux (功能受限) |
| 儲存引擎 | 插件式 (InnoDB/MyISAM/Memory...) | 單一引擎 |
| 事務/鎖 | InnoDB 行鎖 + MVCC | 行鎖 + 鎖升級 |
| 生態工具 | 豐富開源生態 | 微軟生態深度整合 |
| 適用場景 | 互聯網、中小應用、雲原生 | 企業級 ERP、.NET 生態、BI 整合 |
utf8mb4,避免 Emoji 截斷。SET time_zone = '+08:00'; 或配置文件 default-time-zone。Threads_connected、Slow_queries、Innodb_buffer_pool_reads。MySQL 入門核心在於「安裝規範化、授權精準化、字符集統一化、架構清晰化」。掌握 LAMP/LNMP 數據流向、遠程授權 Host 匹配規則、PHP 現代連接方式,即可構建穩定可擴展的數據層基礎設施。