# 官方下載頁面: https://dev.mysql.com/downloads/mysql/5.0.html
# 選擇 Red Hat Enterprise Linux 3 RPM (x86)
wget https://downloads.mysql.com/archives/get/file/MySQL-server-5.0.26-0.i386.rpm
wget https://downloads.mysql.com/archives/get/file/MySQL-client-5.0.26-0.i386.rpm
# 校驗完整性(推薦 GPG 驗證)
rpm -K MySQL-*.rpm
# 1. 安裝服務端(會自動初始化數據目錄、啟動服務)
rpm -ivh MySQL-server-5.0.26-0.i386.rpm
# 2. 安裝客戶端工具
rpm -ivh MySQL-client-5.0.26-0.i386.rpm
# 3. 驗證服務狀態
netstat -ntlp | grep 3306
# tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1234/mysqld
# 4. 首次登錄(默認 root 無密碼)
mysql -u root
# Welcome to the MySQL monitor...
| 用途 | 路徑 | 說明 |
|---|---|---|
| 數據目錄 | /var/lib/mysql/ | 所有數據庫文件、日誌、socket |
| 配置文件 | /etc/my.cnf | 主配置,/usr/share/mysql/*.cnf 為模板 |
| 啟動腳本 | /etc/init.d/mysqld | System V 風格,systemd 為 mysqld.service |
| 客戶端工具 | /usr/bin/mysql* | mysql, mysqladmin, mysqldump 等 |
| 日誌文件 | /var/log/mysqld.log | 錯誤日誌,慢查詢日誌需配置啟用 |
| Socket 文件 | /var/lib/mysql/mysql.sock | 本地連接 Unix Domain Socket |
# 方法一:mysqladmin(推薦)
/usr/bin/mysqladmin -u root password 'StrongP@ssw0rd!'
/usr/bin/mysqladmin -u root -h $(hostname) password 'StrongP@ssw0rd!'
# 方法二:SQL 語句(登錄後執行)
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('StrongP@ssw0rd!');
SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('StrongP@ssw0rd!');
SET PASSWORD FOR 'root'@'::1' = PASSWORD('StrongP@ssw0rd!');
FLUSH PRIVILEGES;
/usr/bin/mysql_secure_installation
# 交互式完成:
# - 設置 root 密碼
# - 移除匿名用戶
# - 禁止 root 遠程登錄
# - 移除 test 數據庫
# - 重新加載權限表
mysql -u root -p
# Enter password: ********
# mysql> SELECT USER(), CURRENT_USER();
# System V 風格
/etc/init.d/mysqld start|stop|restart|status
# systemd 風格 (RHEL 7+)
systemctl start|stop|restart|status mysqld
# 開機自啟
chkconfig mysqld on # SysV
systemctl enable mysqld # systemd
# 緊急關閉(不等待事務提交)
mysqladmin -u root -p shutdown
# 1. 停止服務
systemctl stop mysqld
# 2. 創建新目錄並同步數據(保留屬性、權限、SELinux 上下文)
mkdir -p /home/data/mysql
rsync -aHAX /var/lib/mysql/ /home/data/mysql/
# 3. 修改配置文件 /etc/my.cnf
[mysqld]
datadir=/home/data/mysql
socket=/home/data/mysql/mysql.sock
# 如有 [client] 段同步修改 socket
# 4. 修改啟動腳本(SysV)或 systemd 服務文件
# SysV: /etc/init.d/mysqld 中的 datadir 變量
# systemd: systemctl edit mysqld 添加
[Service]
ExecStartPre=/bin/bash -c "mkdir -p /home/data/mysql && chown mysql:mysql /home/data/mysql"
# 5. SELinux 上下文設置(關鍵!)
semanage fcontext -a -t mysqld_db_t "/home/data/mysql(/.*)?"
restorecon -Rv /home/data/mysql
# 6. 啟動驗證
systemctl start mysqld
mysql -u root -p -e "SHOW VARIABLES LIKE 'datadir';"
# 1. 綁定地址 (my.cnf)
[mysqld]
bind-address = 0.0.0.0 # 監聽所有接口,或具體內網 IP
# 2. 創建遠程用戶(推薦專用賬號,避免 root 遠程)
CREATE USER 'app_user'@'192.168.1.%' IDENTIFIED BY 'AppP@ssw0rd!';
GRANT SELECT, INSERT, UPDATE, DELETE ON app_db.* TO 'app_user'@'192.168.1.%';
FLUSH PRIVILEGES;
# 3. 如必須允許 root 遠程(極不推薦生產環境)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'StrongP@ssw0rd!' WITH GRANT OPTION;
FLUSH PRIVILEGES;
# 內存相關(根據實體內存調整,總計不超 70-80% 物理內存)
innodb_buffer_pool_size = 1G # 核心緩存,專用服務器 60-70% 內存
innodb_log_file_size = 256M # 重做日誌大小
innodb_log_buffer_size = 8M
key_buffer_size = 64M # MyISAM 索引緩存
query_cache_size = 0 # 5.0 版本建議關閉,高併發下鎖爭用嚴重
query_cache_type = 0
# 連接相關
max_connections = 500
thread_cache_size = 50
table_open_cache = 2048
# 存儲引擎默認
default-storage-engine = InnoDB
innodb_file_per_table = 1 # 獨立表空間,便於管理
# 日誌與恢復
log_error = /var/log/mysqld.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 2
log_queries_not_using_indexes = 1
# 字符集
character-set-server = utf8
collation-server = utf8_general_ci
# 全量備份(含存儲過程、觸發器、事件)
mysqldump -u root -p --single-transaction --routines --triggers --events --all-databases > full_$(date +%F).sql
# 單庫備份(生產環境推薦)
mysqldump -u root -p --single-transaction --routines --triggers --events app_db > app_db_$(date +%F).sql
# 壓縮存儲
mysqldump ... | gzip > backup_$(date +%F).sql.gz
# 安裝
yum install -y percona-xtrabackup-24
# 熱備份(不鎖表,僅 InnoDB)
innobackupex --user=root --password='xxx' /backup/full_$(date +%F)
# 增量備份
innobackupex --incremental /backup/inc_$(date +%F) --incremental-basedir=/backup/full_20240101
# 恢復準備
innobackupex --apply-log /backup/full_20240101
innobackupex --copy-back /backup/full_20240101
chown -R mysql:mysql /var/lib/mysql
| 現象 | 排查方向 | 解決命令 |
|---|---|---|
| Can't connect to local MySQL server through socket | 服務未啟動 / socket 路徑不匹配 | systemctl status mysqld; ls -l /var/lib/mysql/mysql.sock |
| Access denied for user 'root'@'localhost' | 密碼錯誤 / 權限表異常 | mysql_secure_installation; 或跳過權限表啟動重置 |
| Table 'xxx' is marked as crashed | MyISAM 表損壞 | myisamchk -r /var/lib/mysql/db/table.MYI |
| InnoDB: Error: space id xxx | 表空間 ID 不匹配 | innodb_force_recovery=1 啟動 dump 重建 |
| Too many connections | 連接數耗盡 / 未釋放 | show processlist; kill idle 連接; 調大 max_connections |
CentOS 5.5 修改 Apache 預設端口 80 為自訂端口 (含 SELinux 端口標記)
CentOS 6/7 靜態 IP 配置全攻略:網卡、網關、DNS 一文搞定
Linux 叢集架構支撐石家莊供水 60 萬戶計費系統:高可用、低成本實戰案例
30 分鐘快速入門 Shell 腳本程式設計:從 Hello World 到自動化腳本
分散式計算開源框架 Hadoop 入門實戰:從單機到叢集部署完整紀錄
Red Hat Cluster Suite (RHCS) Fence 設備深度實戰:IPMI 內部 Fence 無法應對斷電場景的根因與最佳實踐
Unix/Linux 基礎指令完全手冊:登入、目錄、檔案操作篇
Linux 命令行入門掃盲:su/pwd/cd/ls/find/tar/gzip/mkdir/cp/rm/mv/reboot/halt 十二大核心命令詳解