在 Unix/Linux 環境部署 MySQL,遵循「最小權限原則」建立專用用戶與群組、選擇標準安裝路徑、正確設定檔案權限,是穩定運行的基石。本文以原始碼 tarball 方式示範完整安裝流程。
su - root
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
-r 建立系統帳號,-s /bin/false 禁止登入 Shell,提升安全性。
cd /usr/local
# GNU tar
tar -xzf /tmp/mysql-5.7.xx.tar.gz
# 若為非 GNU tar (Solaris 等)
gzip -dc /tmp/mysql-5.7.xx.tar.gz | tar -xf -
ln -s mysql-5.7.xx mysql
ls -ld mysql*
未來升級僅需解壓新版、重新指向符號連結,資料目錄不變動,極大降低風險。
cd mysql
scripts/mysql_install_db --user=mysql
輸出 Installing all prepared tables ... Shutdown Complete 表示成功。
chown -R root:mysql /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql/data
bin/mysqld_safe --user=mysql &
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
# Debian/Ubuntu
update-rc.d mysqld defaults
# CentOS/RHEL
chkconfig --add mysqld
bin/mysqlshow -p
# 輸出 Databases 列表含 mysql、test 即正常
bin/mysqladmin -u root password 'NewStrongPassw0rd!'
mysql -u root -p
CREATE DATABASE test2;
USE test2;
CREATE TABLE books (
id INT(3) NOT NULL AUTO_INCREMENT,
name CHAR(50) NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO books (name) VALUES ('PHP for Beginners'), ('Red Hat Linux 6 Server');
SELECT * FROM books;
| 現象 | 可能原因 | 對策 |
|---|---|---|
啟動失敗,錯誤 Permission denied | data 目錄擁有權錯誤 | |
連線被拒 Can't connect to local MySQL server through socket | mysqld 未啟動或 socket 路徑不符 | 檢查 my.cnf socket 參數與啟動腳本 |
| 中文亂碼 | 字元集未設定 | 在 [mysqld] 與 [client] 加入 character-set-server=utf8mb4 |
完成上述步驟,你已在 Unix/Linux 上建立一個安全、可維護的 MySQL 實例。後續建議配置 my.cnf 調優參數、啟用二進位日誌、設定定時備份,進入生產級維運體系。