適用於 Ubuntu 系統,自動檢測是否已安裝 MySQL 5.5,未安裝則自動安裝並設定 root 密碼。
#!/bin/bash
# 檢查套件是否已安裝
function hasDpkg {
local pkg=$1
local r=$(dpkg -l | grep "$pkg")
if [ -n "$r" ]; then
local h=$(dpkg -l | grep "ii $pkg")
if [ -n "$h" ]; then
return 1 # 已安裝
else
return 0 # 未安裝
fi
else
return 0 # 未安裝
fi
}
mysql_pkg="mysql-server-5.5"
hasDpkg $mysql_pkg
result=$?
if [ $result -eq 1 ]; then
echo "$mysql_pkg was installed"
else
echo "$mysql_pkg was not installed"
# 預設設置 root 密碼為 'adv' (請根據實際需求修改)
echo "mysql-server mysql-server/root_password password adv" | sudo debconf-set-selections
echo "mysql-server mysql-server/root_password_again password adv" | sudo debconf-set-selections
apt-get update && apt-get install -y $mysql_pkg
fi
適用於 CentOS/RHEL 6/7,使用 yum 安裝,並透過 SQL 腳本建立應用帳號。
#!/bin/bash
# 檢查 RPM 套件是否已安裝
function hasinstall {
local pkg=$1
local r=$(rpm -qa "$pkg")
if [ -n "$r" ]; then
return 1 # 已安裝
else
return 0 # 未安裝
fi
}
mysql_pkg="mysql-server"
hasinstall $mysql_pkg
result=$?
if [ $result -eq 1 ]; then
echo "$mysql_pkg was installed"
else
echo "$mysql_pkg was not installed"
yum install -y mysql mysql-server mysql-devel
service mysqld start
chkconfig mysqld on # 設定開機自啟
fi
# 建立應用資料庫帳號
echo "INFORM: Enter database root password"
mysql -uroot -p -hlocalhost < /etc/cloud/mysql/adduser.sql
-- 插入用戶 (忽略重複)
INSERT IGNORE INTO mysql.user (Host, User, Password)
VALUES ('localhost', 'loadserver', PASSWORD('adv'));
FLUSH PRIVILEGES;
-- 授予所有權限
GRANT ALL PRIVILEGES ON *.* TO 'loadserver'@'localhost' IDENTIFIED BY 'adv';
FLUSH PRIVILEGES;
GRANT ALL ON *.* 權限過大,建議根據應用需求限制具體資料庫與權限 (如 SELECT, INSERT, UPDATE)。systemctl enable mysqld 替代 chkconfig。firewall-cmd --add-port=3306/tcp --permanent)。mysql_secure_installation 自動化移除匿名用戶、禁止 root 遠程登入、移除 test 資料庫