本文記錄從下載源碼包到完成安全加固的完整過程,包含依賴處理、用戶隔離、目錄初始化、服務驗證、賬戶清理、測試庫刪除等生產級操作,經多次驗證可直接落地。
/usr/local/mysql-5.6.28-linux-glibc2.5-x86_64,軟鏈接 /usr/local/mysql# 官網下載 wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.28-linux-glibc2.5-x86_64.tar.gz # 必裝依賴:libaio sudo apt-cache search libaio sudo apt-get install libaio1
sudo groupadd mysql sudo useradd -r -g mysql -s /bin/false mysql
-r:系統用戶,無登錄權限-s /bin/false:禁止 Shell 登錄cd /usr/local sudo tar zxvf ~/mysql-5.6.28-linux-glibc2.5-x86_64.tar.gz sudo ln -s mysql-5.6.28-linux-glibc2.5-x86_64 mysql
cd /usr/local/mysql # 1. 整個目錄歸 mysql 用戶 sudo chown -R mysql . sudo chgrp -R mysql . # 2. 以 mysql 身份初始化系統表 sudo -u mysql scripts/mysql_install_db --user=mysql # 3. 目錄歸 root,僅 data 目錄歸 mysql sudo chown -R root . sudo chown -R mysql data
參考官方文檔:Data Directory Initialization
步驟 6:解決 Ubuntu 缺失 mysql 客戶端問題
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'修復方案:
> /usr/local/mysql/my.cnf # 建立軟鏈接兼容 sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock # 重啟服務 cd /usr/local/mysql sudo bin/mysqld_safe --user=mysql &步驟 8:賬戶安全加固(核心)
8.1 檢查初始用戶(均無密碼)
-- 方式一:SET PASSWORD(逐個) SET PASSWORD FOR 'root'@'localhost' = PASSWORD('StrongPass123!'); SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('StrongPass123!'); SET PASSWORD FOR 'root'@'::1' = PASSWORD('StrongPass123!'); SET PASSWORD FOR 'root'@'leaf' = PASSWORD('StrongPass123!'); -- 方式二:UPDATE 批量(推薦) UPDATE mysql.user SET Password = PASSWORD('StrongPass123!') WHERE User = 'root'; FLUSH PRIVILEGES;8.3 處理匿名用戶(二選一)
DELETE FROM mysql.db WHERE Db LIKE 'test%'; DROP DATABASE test; FLUSH PRIVILEGES;步驟 10:驗證加固結果