三種安裝方式對比
| 方式 | 優點 | 缺點 |
| APT 在線安裝 | 自動解決依賴、環境變量、服務管理 | 版本較舊、需網絡 |
| 二進制包 | 版本可控、無依賴地獄 | 手動配置較多 |
| 源碼編譯 | 極致優化、自定義功能 | 耗時、易報錯 |
重點:離線包安裝完整步驟
# 1. 創建用戶組與用戶
groupadd mysql
mkdir /home/mysql
useradd -g mysql -d /home/mysql mysql
# 2. 解壓到 /usr/local
tar zxvf mysql-5.0.45-linux-i686-icc-glibc23.tar.gz -C /usr/local
cd /usr/local
ln -s mysql-5.0.45-linux-i686-icc-glibc23 mysql
cd mysql
# 3. 權限設置
chown -R mysql .
chgrp -R mysql .
# 4. 初始化數據目錄(關鍵步驟,輸出含臨時密碼與啟動命令)
scripts/mysql_install_db --user=mysql
# 5. 設置 root 密碼
./bin/mysqladmin -u root password 'passw0rd'
配置與管理
1. 修改最大連接數
cp support-files/my-medium.cnf ./my.cnf
vim my.cnf
# [mysqld] 區塊添加
max_connections = 1024
2. 啟動/停止
# 啟動
/usr/local/mysql/bin/mysqld_safe --user=mysql &
# 停止
mysqladmin -uroot -ppassw0rd shutdown
# 查看版本
mysqladmin -u root -p version
3. 開機自啟
echo "/usr/local/mysql/bin/mysqld_safe --user=mysql &" >> /etc/rc.local
遠程訪問授權
mysql -u root -p
USE mysql;
-- 所有主機
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'passw0rd' WITH GRANT OPTION;
-- 指定主機
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.11.205' IDENTIFIED BY 'passw0rd' WITH GRANT OPTION;
FLUSH PRIVILEGES;
字符集配置(UTF-8)
# /etc/my.cnf 或 /usr/local/mysql/my.cnf
[client]
default-character-set = utf8
[mysqld]
default-character-set = utf8
init_connect = 'SET NAMES utf8;'
# 重啟生效
只有 /etc/my.cnf 的 client 設置生效,安裝目錄下的只影響 server。
舊數據遷移到 UTF-8
# 1. 導出(指定舊字符集 latin1)
mysqldump --default-character-set=latin1 -hlocalhost -uroot -B dbname --tables old_table > old.sql
# 2. 轉碼
iconv -t utf-8 -f gb2312 -c old.sql > new.sql
# 3. 修改 new.sql:INSERT 前加 SET NAMES utf8; 將 latin1/gb2312 替換為 utf8
# 4. 導入
mysql -hlocalhost -uroot -p dbname < new.sql
# 若報 max_allowed_packet 錯誤,調大 my.cnf 後重啟
主從復制配置(核心步驟)
- 主庫:建立復制用戶、開啟 binlog、
server-id=1、FLUSH TABLES WITH READ LOCK、SHOW MASTER STATUS 記錄 File/Position、建立快照
- 從庫:
server-id=2、導入快照、CHANGE MASTER TO ...、START SLAVE
-- 從庫執行
CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='replication_user',
MASTER_PASSWORD='replication_pwd',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=12345;
START SLAVE;
SHOW SLAVE STATUS\G
備份與恢復
# 單庫備份
mysqldump -uroot -p -B dbname > dbname.sql
# 全庫備份
mysqldump -uroot -p --all-databases > all.sql
# 表備份
mysqldump -uroot -p -B dbname --table tblname > tblname.sql
# 恢復庫
mysql -uroot -p < dbname.sql
# 恢復表(必須指定庫)
mysql -uroot -p dbname < tblname.sql
推薦客戶端工具
- MySQL-Front / Navicat / phpMyAdmin(圖形化)
- Linux Shell:連接後
SET NAMES utf8;