生產環境常用二進制包(預編譯)部署 MySQL,可自定義安裝路徑、多實例共存、版本升級平滑。本文以 CentOS 7 + MySQL 5.7.3 為例,記錄標準化安裝全流程。
mysql-5.7.3-m13-linux-glibc2.5-x86_64.tar.gz(Glibc 2.5+ 通用版)。/opt/src/)。# 用戶/組(禁止登入)
groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql
# 安裝根目錄
mkdir -p /usr/local/mysqlService
cd /usr/local/mysqlService
# 移動並解壓
cp /opt/src/mysql-5.7.3-m13-linux-glibc2.5-x86_64.tar.gz .
tar -zxvf mysql-5.7.3-m13-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.7.3-m13-linux-glibc2.5-x86_64 mysql
# 權限歸屬
chown -R mysql:mysql /usr/local/mysqlService/mysql
cd /usr/local/mysqlService/mysql
# 5.7 使用 --initialize 或 --initialize-insecure
# --initialize-insecure:生成隨機 root 密碼並寫入 ~/.mysql_secret
# --initialize-insecure:root 無密碼(需首次登入修改)
./bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysqlService/mysql --datadir=/usr/local/mysqlService/mysql/data
注意:輸出日誌中會顯示臨時 root 密碼(若用 --initialize),務必記錄。
# 程式檔案屬 root,數據目錄屬 mysql
chown -R root:root /usr/local/mysqlService/mysql
chown -R mysql:mysql /usr/local/mysqlService/mysql/data
# 複製啟動腳本
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
# 加入服務管理
chkconfig --add mysqld
chkconfig mysqld on
/etc/my.cnf[client]
default-character-set=utf8mb4
socket=/tmp/mysql.sock
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
basedir=/usr/local/mysqlService/mysql
datadir=/usr/local/mysqlService/mysql/data
socket=/tmp/mysql.sock
port=3306
pid-file=/usr/local/mysqlService/mysql/mysqld.pid
log-error=/usr/local/mysqlService/mysql/log/mysqld.log
slow_query_log=1
slow_query_log_file=/usr/local/mysqlService/mysql/log/slow.log
long_query_time=1
innodb_buffer_pool_size=1G
innodb_log_file_size=256M
innodb_flush_log_at_trx_commit=1
max_connections=500
open_files_limit=65535
[mysqld_safe]
log-error=/usr/local/mysqlService/mysql/log/mysqld.log
pid-file=/usr/local/mysqlService/mysql/mysqld.pid
建立日誌目錄並授權:
mkdir -p /usr/local/mysqlService/mysql/log
chown mysql:mysql /usr/local/mysqlService/mysql/log
chmod 755 /usr/local/mysqlService/mysql/log
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
# 永久生效寫入 /etc/rc.local 或 systemd 服務
service mysqld start
# 或 systemctl start mysqld (CentOS 7+)
# 檢查進程
ps -ef | grep mysqld | grep -v grep
# 檢查端口
netstat -nutlp | grep 3306
# 查看錯誤日誌
tail -f /usr/local/mysqlService/mysql/log/mysqld.log
/usr/local/mysqlService/mysql/bin/mysql -u root -p
# 輸入臨時密碼(或直接回車若用 initialize-insecure)
-- 修改 root 密碼並開啟遠程訪問
ALTER USER 'root'@'localhost' IDENTIFIED BY 'StrongPassw0rd!';
CREATE USER 'root'@'%' IDENTIFIED BY 'StrongPassw0rd!';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
-- 安全建議:刪除匿名用戶、禁止 root 遠程、移除 test 庫
DELETE FROM mysql.user WHERE User='';
DROP DATABASE IF EXISTS test;
FLUSH PRIVILEGES;
| 操作 | 命令 |
|---|---|
| 啟動 | |
| 停止 | |
| 重啟 | |
| 狀態 | |
| 登入 | |
| 備份 |
yum install numactlyum install libaiosetenforce 0 或配置策略firewall-cmd --add-port=3306/tcp --permanent && firewall-cmd --reload延伸閱讀:MySQL 8.0 安裝流程類似,但預設認證插件為 caching_sha2_password,老版本客端需指定 --default-auth=mysql_native_password 或建立兼容用戶。