一键装库脚本3分钟极速部署,传统耗时砍掉95%!

全栈适配MySQL/Oracle/PostgreSQL/SQL server,3分钟极速部署,人力成本直降70%,老板连夜要求全员掌握。

这里小编将这些脚本整理出来,分享给大家。

更多技术分享点击下方链接👇👇👇👇
ocpsydz71e.feishu.cn/docx/EqksdL...

1.Oracle脚本

ini 复制代码
【脚本说明】
1、下载19C安装包LINUX.X64_193000_db_home.zip后上传到/opt目录下
2、ISO系统镜像需要挂载,后期用于YUM
3、MY_SERVER_IP、MY_HOSTNAME根据自己环境修改
4、MY_ORA_SID为实例名、MY_ORA_MEMORY为分配到内存大小,根据实际情况修改
5、createAsContainerDatabase=TRUE表示容器数据库,改为false后就是非容器
直接执行脚本,自动化安装,本脚本适用于Linux7,其他操作系统可能涉及yum的配置不同,请自行修改
脚本创作不易,请多多支持,关注公众号:IT邦德
bash 复制代码
#!/bin/bash
#==============================================================#
# 脚本名     :   OracleShellInstall.sh
# 创建时间   :   2023-06-13 10:02:09
# 更新时间   :   2025-02-10 10:02:09
# 描述      :    Oracle19C数据库一键安装脚本(单机CDB\NO-CDB)
# 路径      :   /soft/OracleShellInstall
# 版本      :   2.0.0
# 作者      :   王丁丁 公众号:IT邦德
#==============================================================#
#==============================================================#
#                         基础参数                              #
#==============================================================#
##需要设置的参数
#本机服务器IP
export MY_SERVER_IP=192.168.6.5
#本机服务器主机名
export MY_HOSTNAME=dbhost
#ORACLE软件上传根目录
export MY_SOFT_BASE=/opt
#ORACLE软件名
export MY_ORA_SOFT1=LINUX.X64_193000_db_home.zip
## ISO系统镜像存放目录
export MY_DIRECTORY_ISO=/opt
##ORACLE软件存放的目录
export MY_DIRECTORY_SOFT=$MY_SOFT_BASE
##ORACLE脚本存放的目录
export MY_DIRECTORY_SCRIPT=$MY_SOFT_BASE
#==============================================================#
#                         软件准备                              #
#==============================================================#
## 1.将ISO系统镜像上传到系统
## 2.将数据库软件上传到系统
#if [ ! -d /opt/iso ]; then 
#创建镜像目录
#mkdir /opt/iso
#fi
##确认是否有光驱设备
echo " "
MY_ISO=`mount | grep iso9660`
if [ ! -n "$MY_ISO" ];then
    echo "Please Mount A CD ISO Image First"
    exit
else
    mount /dev/cdrom /mnt/ >/dev/null 2>&1
    echo "Mount A CD ISO Image Already"
fi
#==============================================================#
#           Oracle软件安装相关配置                              #
#==============================================================#

#ORACLE软件安装根目录
export MY_DIR=/u01
##ORACLE BASE目录
export MY_ORA_BASE=$MY_DIR/app/oracle
##ORACLE HOME目录
export MY_ORA_HOME=$MY_ORA_BASE/product/19.3.0/dbhome_1
##ORACLE INVENTORY目录
export MY_INVENTORY_LOC=$MY_DIR/app/oraInventory
#ORACLE SID变量
export MY_ORA_SID=orcl
#ORACLE SYS密码
export MY_ORA_PASSWD=oracle
#数据分配的内存
export MY_ORA_MEMORY=1500
##数据文件存放目录
export MY_ORA_DATA=$MY_ORA_BASE/oradata
##判断ORACLE软件是否上传
if [ -f $MY_DIRECTORY_SOFT/$MY_ORA_SOFT1 ]; then 
    echo "Oracle Software Already Upload"
else
    echo "Please Upload Oracle Software First"
    exit
fi
#==============================================================#
#           本地yum配置                                         #
#==============================================================#
mkdir -p /tmp/confbak/yumbak/
mv /etc/yum.repos.d/*  /tmp/confbak/yumbak/  >/dev/null 2>&1
if [ -f /etc/os-release ]; then
    . /etc/os-release
    echo "Distribution: $ID"
    echo "Version: $VERSION_ID"
    if [ "$ID" = "8" ];then
        echo "[localREPO]" >> /etc/yum.repos.d/my.repo
        echo "name=localhost8" >> /etc/yum.repos.d/my.repo
        echo "baseurl=file:///mnt/BaseOS" >> /etc/yum.repos.d/my.repo
        echo "gpgcheck=0" >> /etc/yum.repos.d/my.repo
        echo "enabled=1" >> /etc/yum.repos.d/my.repo

        echo "[localREPO_APP]" >> /etc/yum.repos.d/my.repo
        echo "name=localhost8_app" >> /etc/yum.repos.d/my.repo
        echo "baseurl=file:///mnt/AppStream" >> /etc/yum.repos.d/my.repo
        echo "gpgcheck=0" >> /etc/yum.repos.d/my.repo
        echo "enabled=1" >> /etc/yum.repos.d/my.repo
    else
        echo "[Oracle]" >> /etc/yum.repos.d/my.repo
        echo "name=oracle_install" >> /etc/yum.repos.d/my.repo
        echo "baseurl=file:///mnt/" >> /etc/yum.repos.d/my.repo
        echo "gpgcheck=0" >> /etc/yum.repos.d/my.repo
        echo "enabled=1" >> /etc/yum.repos.d/my.repo
    fi
else
    echo "No OS Release file found."
fi
yum -y install bc  >/dev/null 2>&1
#==============================================================#
#           内核参数计算                                        #
#==============================================================#
##服务器内存大小G单位
export MY_MEMORY_GB=`free -g | grep Mem | awk '{print $2}'`
 
##根据内存计算内核参数大小
export MY_SHMMAX=`echo "$MY_MEMORY_GB*1024*1024*1024*0.9" | bc | awk -F "." '{print $1}'`
export MY_SHMALL=`echo "$MY_MEMORY_GB*1024*1024*1024*0.9/4" | bc | awk -F "." '{print $1}'`
#==============================================================#
#           安装前准备工作                                      #
#==============================================================#
## 1.1 设置主机名
hostnamectl set-hostname $MY_HOSTNAME
sed -i '/^HOSTNAME=/d' /etc/sysconfig/network
echo "HOSTNAME=$MY_HOSTNAME" >> /etc/sysconfig/network
echo "1.1 Configure hostname completed."
## 1.2 修改hosts
cp /etc/hosts /tmp/confbak
cat >> /etc/hosts <<EOF
$MY_SERVER_IP $MY_HOSTNAME
EOF
echo "1.2 Configure Hosts Completed."
## 1.3 安装数据库依赖包
yum -y install bc binutils compat-libcap1 compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc \
glibc-devel ksh libaio libaio-devel libXrender libXrender-devel libX11 libXau libXi libXtst libgcc libstdc++ \
libstdc++-devel libxcb make policycoreutils policycoreutils-python smartmontools sysstat  >/dev/null 2>&1
cd $MY_DIRECTORY_SOFT
echo "1.3 Install rpm Software Completed."
## 1.4 关闭防火墙
systemctl stop firewalld.service  >/dev/null 2>&1
systemctl disable firewalld.service  >/dev/null 2>&1 
systemctl status firewalld.service  >/dev/null 2>&1
echo "1.4 Disable Firewalld Service Completed."
## 1.5 关闭SELinux
cp /etc/selinux/config /tmp/confbak/config
sed -i '/^SELINUX=/d' /etc/selinux/config
echo "SELINUX=disabled" >> /etc/selinux/config
# cat /etc/selinux/config|grep "SELINUX=disabled"
setenforce 0 >/dev/null 2>&1
echo "1.5 Disable SELINUX Completed."
## 1.6 建立用户和组
if id -u oracle >/dev/null 2>&1; then
    echo "Oracle User Exists."
else
    groupadd -g 14321 oinstall  >/dev/null 2>&1
    groupadd -g 14322 dba  >/dev/null 2>&1
    groupadd -g 14323 oper  >/dev/null 2>&1
    groupadd -g 14324 backupdba  >/dev/null 2>&1
    groupadd -g 14325 dgdba  >/dev/null 2>&1
    groupadd -g 14326 kmdba  >/dev/null 2>&1
    groupadd -g 14327 racdba  >/dev/null 2>&1    
    useradd -u 1101 -g oinstall -G dba,backupdba,dgdba,kmdba,racdba,oper oracle  >/dev/null 2>&1
    echo oracle123 | passwd --stdin oracle  >/dev/null 2>&1
    echo "1.6 User Created Completed."
fi
## 1.7 创建相关目录
mkdir -p $MY_ORA_HOME
chown -R oracle:oinstall $MY_DIR/app
chmod -R 775 $MY_DIR/app
echo "1.7 Oracle Directories Created Completed."
## 1.8 修改内核参数
cp /etc/sysctl.conf /tmp/confbak/sysctl.conf
cat >> /etc/sysctl.conf  <<EOF
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
kernel.shmmax = $MY_SHMMAX
kernel.shmall = $MY_SHMALL
EOF
sysctl -p  >/dev/null 2>&1
echo "1.8 Configure Linux Kernal Parameter Completed."
## 1.9 修改文件限制
cp /etc/security/limits.conf /tmp/confbak/limits.conf
cat >> /etc/security/limits.conf   <<EOF
oracle              soft    nproc   2047
oracle              hard    nproc   16384
oracle              soft    nofile  1024
oracle              hard    nofile  65536
oracle              soft    stack   10240
EOF
echo "1.9 Configure Linux Resource Limit Completed."
## 1.10 配置系统环境变量
cp /etc/profile /tmp/confbak/profile
cat >> /etc/profile  <<EOF
if [ $USER = "oracle" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
        ulimit -p 16384
        ulimit -n 65536
    else
        ulimit -u 16384 -n 65536
    fi
fi
EOF
echo "1.10 Configure Linux Profile Env Completed."
## 1.11 配置NOZEROCONFIG
cat >> /etc/sysconfig/network <<EOF
NOZEROCONF=yes
EOF
echo "1.11 Configure Nozeroconfig Completed."
## 1.12 修改oracle用户环境变量
export MY_LD_LIBRARY_PATH=$MY_ORA_HOME/lib
export MY_CLASSPATH=$MY_ORA_HOME/JRE
su - oracle -c "
cat >> /home/oracle/.bash_profile  <<EOF
ORACLE_SID=$MY_ORA_SID; export ORACLE_SID
ORACLE_UNQNAME=$MY_ORA_SID; export ORACLE_UNQNAME
ORACLE_BASE=$MY_ORA_BASE; export ORACLE_BASE
ORACLE_HOME=$MY_ORA_HOME; export ORACLE_HOME
JAVA_HOME=/usr/local/java; export JAVA_HOME
ORACLE_PATH=$MY_DIR/app/common/oracle/sql; export ORACLE_PATH
ORACLE_TERM=xterm; export ORACLE_TERM
TNS_ADMIN=$MY_ORA_HOME/network/admin; export TNS_ADMIN
ORA_NLS11=$MY_ORA_HOME/nls/data; export ORA_NLS11
PATH=/usr/sbin:$PATH; export PATH
PATH=$MY_ORA_HOME/bin:$MY_DIR/app/common/oracle/bin:$PATH; export PATH
#LD_LIBRARY_PATH=$MY_ORA_HOME/lib
LD_LIBRARY_PATH=${MY_LD_LIBRARY_PATH}:$MY_ORA_HOME/oracm/lib
LD_LIBRARY_PATH=${MY_LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export LD_LIBRARY_PATH
#CLASSPATH=$MY_ORA_HOME/JRE
CLASSPATH=${MY_CLASSPATH}:$MY_ORA_HOME/jlib
CLASSPATH=${MY_CLASSPATH}:$MY_ORA_HOME/rdbms/jlib
CLASSPATH=${MY_CLASSPATH}:$MY_ORA_HOME/network/jlib
export CLASSPATH
THREADS_FLAG=native; export THREADS_FLAG
export TEMP=/tmp
export TMPDIR=/tmp
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
umask 022
EOF
"
source /home/oracle/.bash_profile >/dev/null 2>&1
echo "1.12 Configure Oracle Env Completed."
## 1.13 解压数据库软件
echo "1.13 Start Unzip Oracle Software."
cd $MY_DIRECTORY_SOFT
rm -rf $MY_DIRECTORY_SOFT/database
chown oracle.oinstall $MY_DIRECTORY_SOFT/$MY_ORA_SOFT1 -R
chmod 755 -R $MY_DIRECTORY_SOFT/$MY_ORA_SOFT1
su - oracle -c "unzip -q $MY_DIRECTORY_SOFT/$MY_ORA_SOFT1 -d $MY_ORA_HOME" &
while true;
do 
    echo -n ".";sleep 2;
    MY_EXEC=`ps -ef | grep unzip | grep -Evi grep`
    if [ "$MY_EXEC" = "" ] 
    then
        break;
    fi 
done
echo " "
echo "1.13 Unzip Oracle Software Completed."
#==============================================================#
#           数据库安装工作                                      #
#==============================================================#
## 2.1 创建数据库软件静默安装文件
mkdir -p $MY_INVENTORY_LOC
chown oracle.oinstall $MY_INVENTORY_LOC
if [ ! -d "$MY_DIRECTORY_SCRIPT" ]; then 
    mkdir -p $MY_DIRECTORY_SCRIPT
fi
cd  $MY_DIRECTORY_SCRIPT
rm -rf db_install.rsp
cat >> db_install.rsp   <<EOF
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0 
oracle.install.option=INSTALL_DB_SWONLY 
UNIX_GROUP_NAME=oinstall 
INVENTORY_LOCATION=$MY_INVENTORY_LOC
ORACLE_BASE=$MY_ORA_BASE
ORACLE_HOME=$MY_ORA_HOME
oracle.install.db.InstallEdition=EE 
oracle.install.db.OSDBA_GROUP=dba 
oracle.install.db.OSOPER_GROUP=oper 
oracle.install.db.OSBACKUPDBA_GROUP=backupdba 
oracle.install.db.OSDGDBA_GROUP=dgdba 
oracle.install.db.OSKMDBA_GROUP=kmdba 
oracle.install.db.OSRACDBA_GROUP=racdba
oracle.install.db.rootconfig.executeRootScript=true 
oracle.install.db.rootconfig.configMethod=ROOT
oracle.install.db.config.starterdb.type=DATA_WAREHOUSE
EOF
chown oracle.oinstall $MY_DIRECTORY_SCRIPT -R
echo "2.1 Create Silent Configure File Completed."
## 2.2 静默安装数据库软件
chown oracle.oinstall $MY_DIRECTORY_SCRIPT/db_install.rsp
su - oracle -c "$MY_ORA_HOME/runInstaller -silent -force -noconfig -ignorePrereq -responseFile $MY_DIRECTORY_SCRIPT/db_install.rsp"
while true;
do 
    echo -n ".";sleep 2;
    MY_EXEC=`ps -ef | grep java | grep -Evi grep`
    if [ "$MY_EXEC" = "" ] 
    then
        break;
    fi 
done
echo " "
if [ $? -eq 0 ]; then
    sh $MY_INVENTORY_LOC/orainstRoot.sh  >/dev/null 2>&1
    sh $MY_ORA_HOME/root.sh  >/dev/null 2>&1
    
    NOW_DATE=`date +%Y-%m-%d`
    echo "Check  $MY_ORA_HOME/install/root_"$MY_HOSTNAME"_"$NOW_DATE"_xxx.log for the output of root script"
    echo " "
    echo "2.2 Install Oracle Software Completed."
else
  echo "2.2 Install Oracle Software Failed."
fi
## 2.3 静默配置数据库监听
cd  $MY_DIRECTORY_SCRIPT
rm -rf netca.rsp
cat >> netca.rsp   <<EOF
[GENERAL]
RESPONSEFILE_VERSION="19.3"
CREATE_TYPE="CUSTOM"
[oracle.net.ca]
INSTALLED_COMPONENTS={"server","net8","javavm"}
INSTALL_TYPE=""typical""
LISTENER_NUMBER=1
LISTENER_NAMES={"LISTENER"}
LISTENER_PROTOCOLS={"TCP;1521"}
LISTENER_START=""LISTENER""
NAMING_METHODS={"TNSNAMES","ONAMES","HOSTNAME"}
NSN_NUMBER=1
NSN_NAMES={"EXTPROC_CONNECTION_DATA"}
NSN_SERVICE={"PLSExtProc"}
NSN_PROTOCOLS={"TCP;HOSTNAME;1521"}
EOF
chown oracle.oinstall $MY_DIRECTORY_SCRIPT/netca.rsp
su - oracle -c "$MY_ORA_HOME/bin/netca -silent -responseFile $MY_DIRECTORY_SCRIPT/netca.rsp"  >/dev/null 2>&1
echo "2.3 Configure Oracle Listener Completed."
## 2.4 配置静默创建数据库文件
cd  $MY_DIRECTORY_SCRIPT
rm -rf dbca.rsp
cat >> dbca.rsp   <<EOF
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v19.0.0
templateName=General_Purpose.dbc
gdbName=$MY_ORA_SID
sid=$MY_ORA_SID
createAsContainerDatabase=TRUE
numberOfPDBs=1
pdbName=pdb01
pdbAdminPassword=$MY_ORA_PASSWD
sysPassword=$MY_ORA_PASSWD
systemPassword=$MY_ORA_PASSWD
datafileDestination=$MY_ORA_BASE/oradata
recoveryAreaDestination=$MY_ORA_BASE/fast_recovery_area
storageType=FS
characterSet=AL32UTF8
nationalCharacterSet=UTF8
sampleSchema=true
totalMemory=$MY_ORA_MEMORY
databaseType=OLTP
databaseConfigType=SI
emConfiguration=NONE
EOF
echo "2.4 Create Silent Configure File Completed."
## 2.5 静默创建数据库
if [ ! -d "$MY_ORA_BASE/oradata" ]; then 
    mkdir $MY_ORA_BASE/oradata
fi
if [ ! -d "$MY_ORA_BASE/fast_recovery_area" ]; then 
    mkdir $MY_ORA_BASE/fast_recovery_area
fi
chown oracle.oinstall $MY_ORA_BASE/oradata
chown oracle.oinstall $MY_ORA_BASE/fast_recovery_area
chown oracle.oinstall $MY_DIRECTORY_SCRIPT/dbca.rsp
su - oracle -c "$MY_ORA_HOME/bin/dbca -silent -createDatabase -responseFile $MY_DIRECTORY_SCRIPT/dbca.rsp"
echo "2.5 Create Database Completed."
echo "Oracle successfully installed"

2.PostgreSQL脚本

bash 复制代码
【脚本说明】
1、下载PG源码安装包后上传到/opt目录下
2、ISO系统镜像需要挂载,后期用于YUM
3、MY_SERVER_IP、MY_HOSTNAME根据自己环境修改
4、PG_VERSION为版本号,如果其他版本请更改
直接执行脚本,自动化安装,本脚本适用于Linux7,其他操作系统可能涉及yum的配置不同,请自行修改
脚本创作不易,请多多支持,关注公众号:IT邦德
bash 复制代码
#!/bin/bash
#==============================================================#
# 脚本名     :   PG_SOUECE.sh
# 创建时间   :   2024-03-08 22:00:00
# 更新时间   :   2024-03-09 23:00:00
# 描述      :    PostgreSQL数据库源码一键安装脚本(单机)
# Linux系统 :    Liunx7
# PG版本    :    14.11
# 脚本路径   :   /opt
# 版本      :   2.0.0
# 作者      :   王丁丁,公众号:IT邦德,PostgreSQL ACE Partner
# 说明      :   其他版本替换相应的源码包即可
#==============================================================#
#==============================================================#
#                         基础参数                              #
#==============================================================#
##需要设置的参数
#本机服务器IP
export MY_SERVER_IP=192.168.3.20
#本机服务器主机名
export MY_HOSTNAME=pgpcp
#PostgreSQL相关RPM包上传根目录
export MY_SOFT_BASE=/opt
#PG源码包
export PG_SOFT=postgresql-14.11.tar.gz
#PG版本
export PG_VERSION=14.11
## ISO系统镜像存放目录
export MY_DIRECTORY_ISO=/opt
##PG源码包存放的目录
export MY_DIRECTORY_SOFT=$MY_SOFT_BASE
##PG脚本存放的目录
export MY_DIRECTORY_SCRIPT=$MY_SOFT_BASE
#==============================================================#
#           PG安装相关配置                                       #
#==============================================================#
#PG根目录
export MY_PG_HOME=/pgccc
#PG数据目录
export PGDATA=$MY_PG_HOME/pgdata
#PG家目录
export PGHOME=/pgccc/pgsql
##PG源码编译目录
export MY_PG_COMPILE=/pgccc/soft/postgresql-$PG_VERSION
##判断安装包是否上传
if [ -f $MY_DIRECTORY_SOFT/$PG_SOFT ]; then 
    echo "PG Source Soft Already Upload"
else
    echo "Please Upload PG Source Soft First"
    exit
fi
#==============================================================#
#                        挂载光驱                               #
#==============================================================#
## 1.将ISO系统镜像上传到系统
## 2.将数据库软件上传到系统
## 确认是否有光驱设备
echo " "
MY_ISO=`mount | grep iso9660`
if [ ! -n "$MY_ISO" ];then
    echo "Please Mount A CD ISO Image First"
    exit
else
    mount /dev/cdrom /mnt/ >/dev/null 2>&1
    echo "Mount A CD ISO Image Already"
fi
#==============================================================#
#           1.本地yum配置                                       #
#==============================================================#
mkdir -p /tmp/confbak/yumbak/
mv /etc/yum.repos.d/*  /tmp/confbak/yumbak/  >/dev/null 2>&1
## 确认操作系统的版本,配置yum
if [ -f /etc/os-release ]; then
    . /etc/os-release
    echo "Distribution: $ID"
    echo "Version: $VERSION_ID"
    if [ "$ID" = "8" ];then
        echo "[localREPO]" >> /etc/yum.repos.d/my.repo
        echo "name=localhost8" >> /etc/yum.repos.d/my.repo
        echo "baseurl=file:///mnt/BaseOS" >> /etc/yum.repos.d/my.repo
        echo "gpgcheck=0" >> /etc/yum.repos.d/my.repo
        echo "enabled=1" >> /etc/yum.repos.d/my.repo

        echo "[localREPO_APP]" >> /etc/yum.repos.d/my.repo
        echo "name=localhost8_app" >> /etc/yum.repos.d/my.repo
        echo "baseurl=file:///mnt/AppStream" >> /etc/yum.repos.d/my.repo
        echo "gpgcheck=0" >> /etc/yum.repos.d/my.repo
        echo "enabled=1" >> /etc/yum.repos.d/my.repo
    else
        echo "[Oracle]" >> /etc/yum.repos.d/my.repo
        echo "name=oracle_install" >> /etc/yum.repos.d/my.repo
        echo "baseurl=file:///mnt/" >> /etc/yum.repos.d/my.repo
        echo "gpgcheck=0" >> /etc/yum.repos.d/my.repo
        echo "enabled=1" >> /etc/yum.repos.d/my.repo
    fi
else
    echo "No OS Release file found."
fi
yum -y install bc  >/dev/null 2>&1
echo "1 Configure yum Completed."
#==============================================================#
#           2.安装前准备工作                                     #
#==============================================================#
## 2.1 设置主机名
hostnamectl set-hostname $MY_HOSTNAME
sed -i '/^HOSTNAME=/d' /etc/sysconfig/network
echo "HOSTNAME=$MY_HOSTNAME" >> /etc/sysconfig/network
echo "2.1 Configure hostname completed."
## 2.2 修改hosts
cp /etc/hosts /tmp/confbak
cat >> /etc/hosts <<EOF
$MY_SERVER_IP $MY_HOSTNAME
EOF
echo "2.2 Configure Hosts Completed."
## 2.3 安装PG依赖
yum install -y openssl openssl-devel pam pam-devel libxml2 libxml2-devel \
libxslt libxslt-devel perl perl-devel python-devel perl-ExtUtils-Embed \
readline readline-devel bzip2 zlib zlib-devel ntp ntpdate \
gettext gettext-devel bison flex gcc gcc-c++ \
boost-devel gmp* mpfr* libevent* libpython3.6m >/dev/null 2>&1
echo "2.3 Install PG dependency Completed."
## 2.4 关闭防火墙
systemctl stop firewalld.service  >/dev/null 2>&1
systemctl disable firewalld.service  >/dev/null 2>&1 
systemctl status firewalld.service  >/dev/null 2>&1
echo "2.4 Disable Firewalld Service Completed."
## 2.5 关闭SELinux
sed -i '/^SELINUX=/d' /etc/selinux/config
echo "SELINUX=disabled" >> /etc/selinux/config
# cat /etc/selinux/config|grep "SELINUX=disabled"
setenforce 0 >/dev/null 2>&1
echo "2.5 close SELinux completed."
## 2.6 建立用户和组
if id -u postgres >/dev/null 2>&1; then
    echo "postgres User Exists."
else
    groupadd -g 70000 postgres  >/dev/null 2>&1
    useradd -u 70000 -g postgres postgres >/dev/null 2>&1
    echo postgres | passwd --stdin postgres  >/dev/null 2>&1
    echo "User postgres Created Completed."
fi
echo "2.6 Establish users and groups Completed."
## 2.7 创建相关目录
mkdir -p $MY_PG_HOME/{pgdata,archive,scripts,backup,pgsql,soft}
chown -R postgres:postgres $MY_PG_HOME
chmod -R 775 $MY_PG_HOME
echo "2.7 PG Directories Created Completed."
## 2.8 修改postgres用户环境变量
echo 'export PS1="[\u@\h \W]\$"'  >> /home/postgres/.bash_profile
su - postgres -c "
cat >> /home/postgres/.bash_profile <<EOF
export LANG=en_US.UTF-8
export PGPORT=5432
export PGDATA=$PGDATA
export PGHOME=$PGHOME
export PATH=$PGHOME/bin:$PATH:.
export PGUSER=postgres
export PGDATABASE=postgres
EOF
"
source /home/postgres/.bash_profile >/dev/null 2>&1
echo "2.8 Configure postgres Env Completed."
#==============================================================#
#           3.PG数据库安装工作                                    #
#==============================================================#
## 3.1 解压数据库软件
echo "3.1 Start Unzip PG Software."
cp $MY_DIRECTORY_SOFT/$PG_SOFT $MY_PG_HOME/soft
cd $MY_PG_HOME/soft
tar -zxvf $MY_PG_HOME/soft/$PG_SOFT
chown -R postgres:postgres $MY_PG_HOME/soft
chmod 755 -R $MY_PG_HOME/soft
echo "3.1 Unzip PG Software Completed."
## 3.2 PG编译安装
su - postgres -c "$MY_PG_COMPILE/configure --prefix=$PGHOME --without-readline" >/dev/null 2>&1
cd $MY_PG_COMPILE
su - postgres -c "make -j 4 && make install" >/dev/null 2>&1
su - postgres -c "$PGHOME/bin/initdb -D $PGDATA -E UTF8 --locale=en_US.utf8 -U postgres" >/dev/null 2>&1
echo "3.2 PG Compile Installation."
## 3.3 配置数据库参数
su - postgres -c "
cat >> $PGDATA/postgresql.conf <<EOF
listen_addresses = '*'
port=5432
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%a.log'
log_truncate_on_rotation = on
EOF
"
echo "postgresql.conf successfully"
su - postgres -c "
cat > $PGDATA/pg_hba.conf << EOF
# TYPE  DATABASE    USER    ADDRESS       METHOD
local     all       all                    trust
host      all       all   127.0.0.1/32     trust
host      all       all    0.0.0.0/0      md5
host   replication  all    0.0.0.0/0      md5
local  replication  all                    trust
EOF
"
echo "pg_hba.conf successfully"
systemctl start ntpd  >/dev/null 2>&1 
systemctl enable ntpd  >/dev/null 2>&1
echo "3.3 Configure database parameters successfully"

3.MySQL脚本

bash 复制代码
【脚本说明】
1、下载MySQL二进制安装包后上传到/opt目录下
2、ISO系统镜像需要挂载,后期用于YUM
3、脚本中最后修了root密码为:Jeames@007
4、脚本中配置了二进制自启动数据库到服务
直接执行脚本,自动化安装,本脚本适用于Linux7,
其他操作系统可能涉及yum的配置不同,请自行修改
脚本创作不易,请多多支持!
bash 复制代码
#!/bin/bash
#==============================================================#
# 脚本名     :   MySQL_GENERIC.sh
# 创建时间   :   2024-03-08 22:00:00
# 更新时间   :   2025-02-10 10:00:00
# 描述      :    MySQL数据库二进制一键安装脚本(单机)
# Linux系统 :    Liunx7
# MySQL版本 :    8.0.27
# 脚本路径   :   /opt
# 版本      :   3.0.0
# 作者      :   公众号:IT邦德,Oracle ACE
# 说明      :   其他版本替换相应的二进制包即可
#==============================================================#
#==============================================================#
#                         基础参数                              #
#==============================================================#
##需要设置的参数
#本机服务器IP
export MY_SERVER_IP=192.168.3.10
#本机服务器主机名
export MY_HOSTNAME=mysql
#MySQL相关RPM包上传根目录
export MY_SOFT_BASE=/opt
#MySQL二进制包
export MY_HOME=/mysql
export MY_SOFT=mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
## ISO系统镜像存放目录
export MY_DIRECTORY_ISO=/opt
##MySQL二进制包存放的目录
export MY_DIRECTORY_SOFT=$MY_SOFT_BASE
##MySQL脚本存放的目录
export MY_DIRECTORY_SCRIPT=$MY_SOFT_BASE
##判断安装包是否上传
if [ -f $MY_DIRECTORY_SOFT/$MY_SOFT ]; then 
    echo "MySQL GENERIC Soft Already Upload"
else
    echo "Please Upload MySQL GENERIC Soft First"
    exit
fi
#==============================================================#
#                        挂载光驱                               #
#==============================================================#
## 1.将ISO系统镜像上传到系统
## 2.将数据库软件上传到系统
## 确认是否有光驱设备
echo " "
MY_ISO=`mount | grep iso9660`
if [ ! -n "$MY_ISO" ];then
    echo "Please Mount A CD ISO Image First"
    exit
else
    mount /dev/cdrom /mnt/ >/dev/null 2>&1
    echo "Mount A CD ISO Image Already"
fi
#==============================================================#
#           1.本地yum配置                                       #
#==============================================================#
mkdir -p /tmp/confbak/yumbak/
mv /etc/yum.repos.d/*  /tmp/confbak/yumbak/  >/dev/null 2>&1
## 确认操作系统的版本,配置yum
if [ -f /etc/os-release ]; then
    . /etc/os-release
    echo "Distribution: $ID"
    echo "Version: $VERSION_ID"
    if [ "$ID" = "8" ];then
        echo "[localREPO]" >> /etc/yum.repos.d/my.repo
        echo "name=localhost8" >> /etc/yum.repos.d/my.repo
        echo "baseurl=file:///mnt/BaseOS" >> /etc/yum.repos.d/my.repo
        echo "gpgcheck=0" >> /etc/yum.repos.d/my.repo
        echo "enabled=1" >> /etc/yum.repos.d/my.repo

        echo "[localREPO_APP]" >> /etc/yum.repos.d/my.repo
        echo "name=localhost8_app" >> /etc/yum.repos.d/my.repo
        echo "baseurl=file:///mnt/AppStream" >> /etc/yum.repos.d/my.repo
        echo "gpgcheck=0" >> /etc/yum.repos.d/my.repo
        echo "enabled=1" >> /etc/yum.repos.d/my.repo
    else
        echo "[Oracle]" >> /etc/yum.repos.d/my.repo
        echo "name=oracle_install" >> /etc/yum.repos.d/my.repo
        echo "baseurl=file:///mnt/" >> /etc/yum.repos.d/my.repo
        echo "gpgcheck=0" >> /etc/yum.repos.d/my.repo
        echo "enabled=1" >> /etc/yum.repos.d/my.repo
    fi
else
    echo "No OS Release file found."
fi
yum -y install bc  >/dev/null 2>&1
echo "1 Configure yum Completed."
#==============================================================#
#           2.安装前准备工作                                     #
#==============================================================#
## 2.1 设置主机名
hostnamectl set-hostname $MY_HOSTNAME
sed -i '/^HOSTNAME=/d' /etc/sysconfig/network
echo "HOSTNAME=$MY_HOSTNAME" >> /etc/sysconfig/network
echo "2.1 Configure hostname completed."
## 2.2 修改hosts
cp /etc/hosts /tmp/confbak
cat >> /etc/hosts <<EOF
$MY_SERVER_IP $MY_HOSTNAME
EOF
echo "2.2 Configure Hosts Completed."
## 2.3 安装MySQL依赖
yum -y install ntp ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make >/dev/null 2>&1
echo "2.3 Install MySQL dependency Completed."
## 2.4 关闭防火墙
systemctl stop firewalld.service  >/dev/null 2>&1
systemctl disable firewalld.service  >/dev/null 2>&1 
systemctl status firewalld.service  >/dev/null 2>&1
echo "2.4 Disable Firewalld Service Completed."
## 2.5 关闭SELinux
sed -i '/^SELINUX=/d' /etc/selinux/config
echo "SELINUX=disabled" >> /etc/selinux/config
# cat /etc/selinux/config|grep "SELINUX=disabled"
setenforce 0 >/dev/null 2>&1
echo "2.5 close SELinux completed."
## 2.6 建立用户和组
if id -u mysql >/dev/null 2>&1; then
    echo "mysql User Exists."
else
    groupadd -g 60000 mysql  >/dev/null 2>&1
    useradd -u 60000 -g mysql mysql >/dev/null 2>&1
    echo mysql | passwd --stdin mysql  >/dev/null 2>&1
    echo "2.6 User mysql Created Completed."
fi
echo "2.6 Establish users and groups Completed."
## 2.7 创建相关目录
mkdir -p $MY_HOME/{app,conf}
mkdir -p $MY_HOME/data/mysql3306/{pid,socket,log,binlog,errlog,relaylog,slowlog,tmp}
chown -R mysql:mysql $MY_HOME
chmod -R 775 $MY_HOME
echo "2.7 MySQL Directories Created Completed."
## 2.8 修改MySQL用户环境变量
echo 'export PS1="[\u@\h \W]\$"'  >> /home/mysql/.bash_profile

cat >> /home/mysql/.bash_profile <<EOF
export MYSQL_HOME=$MY_HOME/app/mysql
export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$MY_HOME/app/mysql/bin
EOF

source /home/mysql/.bash_profile > /dev/null

echo "2.8 Configure MySQL Env Completed."
#==============================================================#
#           3.MySQL数据库安装工作                                    #
#==============================================================#
## 3.1 解压数据库软件
echo "3.1 Start Unzip MySQL Software."
cp $MY_DIRECTORY_SOFT/$MY_SOFT $MY_HOME/app
cd $MY_HOME/app
tar xvf $MY_HOME/app/$MY_SOFT
mv ${MY_SOFT/%.tar.xz/} mysql
chown -R mysql:mysql $MY_HOME/app
chmod 755 -R $MY_HOME/app
echo "3.1 Unzip MySQL Software Completed."
## 3.2 配置数据库参数
su - mysql -c "
cat >> $MY_HOME/conf/mysql.cnf <<EOF
[mysqld]
server_id = 803306
default-storage-engine= InnoDB
socket=/tmp/mysql.sock
basedir=$MY_HOME/app/mysql
datadir=$MY_HOME/data/mysql3306/data/
log-error=$MY_HOME/data/mysql3306/log/mysqld.log
pid-file=$MY_HOME/data/mysql3306/pid/mysqld.pid
port=3306
default_authentication_plugin=mysql_native_password
transaction_isolation=READ-COMMITTED
max_connections=1500
back_log=500
wait_timeout=1800
max_user_connections=800
innodb_buffer_pool_size=1024M
innodb_log_file_size=512M
innodb_log_buffer_size=40M
slow_query_log=ON
long_query_time=5
# log settings #
slow_query_log = ON
slow_query_log_file = $MY_HOME/data/mysql3306/slowlog/slow3306.log
log_error = $MY_HOME/data/mysql3306/errlog/err3306.log
log_error_verbosity = 3
log_bin = $MY_HOME/data/mysql3306/binlog/mysql_bin
log_bin_index = $MY_HOME/data/mysql3306/binlog/mysql_binlog.index
general_log_file = $MY_HOME/mysql/mysql3306/generallog/general.log
log_queries_not_using_indexes = 1
log_slow_admin_statements = 1
expire_logs_days = 90
binlog_expire_logs_seconds = 2592000
long_query_time = 2
min_examined_row_limit = 100
log_throttle_queries_not_using_indexes = 1000
innodb_flush_log_at_trx_commit=1
EOF
"
echo "3.2 mysql.cnf successfully"
## 3.3 MySQL二进制安装
su - mysql -c "mysqld --defaults-file=$MY_HOME/conf/mysql.cnf --initialize --user=mysql --basedir=$MY_HOME/app/mysql --datadir=$MY_HOME/data/mysql3306/data/
" >/dev/null 2>&1

rm -rf /etc/systemd/system/mysql.service
systemctl daemon-reload

cat > /etc/systemd/system/mysql.service <<EOF
[Unit]
Description=MySQL Server
After=network.target
[Service]
#二进制启动mysqld的命令
ExecStart=$MY_HOME/app/mysql/bin/mysqld_safe --defaults-file=$MY_HOME/conf/mysql.cnf  
ExecStop=$MY_HOME/app/mysql/bin/mysqladmin -u root -p shutdown
User=mysql
Group=mysql
Restart=always

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable mysql.service
systemctl start mysql.service

echo "3.3 MySQL Compile Installation."
systemctl start ntpd  >/dev/null 2>&1 
systemctl enable ntpd  >/dev/null 2>&1

## 3.4 修改密码
Pass=$(grep 'A temporary password' $MY_HOME/data/mysql3306/errlog/err3306.log |awk '{print $NF}')
echo -e "mysql default passwd is: ${Pass}"
# 修改密码,请执行以下语句
echo -e "alter user root@'localhost' identified with mysql_native_password by 'root';"
echo "Configure database parameters successfully"

4. SQL server脚本

bash 复制代码
【脚本说明】
1、下载SQL server RPM包上传到/opt目录下
2、建议服务器内存需≥4GB,建议swap空间≥2GB
3. SQL server RPM可以通过官网下载
https://learn.microsoft.com/zh-cn/
直接执行脚本,自动化安装,本脚本适用于Linux7,
其他操作系统可能涉及yum的配置不同,请自行修改
脚本创作不易,请多多支持!
bash 复制代码
#!/bin/bash
#==============================================================#
# 脚本名     :   mssql_offline.sh
# 创建时间   :   2024-03-08 22:00:00
# 更新时间   :   2025-02-10 10:00:00
# 描述      :    SQL Server离线安装脚本
# Linux系统 :    Liunx7
# 脚本路径   :   /opt
# 版本      :   3.0.0
# 作者      :   公众号:IT邦德,Oracle ACE
# 说明      :   其他版本替换相应的二进制包即可
#==============================================================#

#==============================================================#
#                        挂载光驱                               #
#==============================================================#
## 确认是否有光驱设备
echo " "
MY_ISO=`mount | grep iso9660`
if [ ! -n "$MY_ISO" ];then
    echo "Please Mount A CD ISO Image First"
    exit
else
    mount /dev/cdrom /mnt/ >/dev/null 2>&1
    echo "Mount A CD ISO Image Already"
fi

#==============================================================#
#           本地yum配置                                         #
#==============================================================#
mkdir -p /tmp/confbak/yumbak/
mv /etc/yum.repos.d/*  /tmp/confbak/yumbak/  >/dev/null 2>&1
## 确认操作系统的版本,配置yum
echo "[mssql]" >> /etc/yum.repos.d/my.repo
echo "name=mssql_install" >> /etc/yum.repos.d/my.repo
echo "baseurl=file:///mnt/" >> /etc/yum.repos.d/my.repo
echo "gpgcheck=0" >> /etc/yum.repos.d/my.repo
echo "enabled=1" >> /etc/yum.repos.d/my.repo


# 强制root权限运行
if [[ $EUID -ne 0 ]]; then
   echo "必须使用root权限运行" >&2
   exit 1
fi

# 配置参数(安装前需修改)
INSTALL_DIR="/opt"   # 离线包存放路径
SA_PASSWORD="Your@StrongPwd123"    # 需包含大小写+数字+特殊字符
INSTALL_MODE="Evaluation"
TCP_PORT=1433

# 安装日志记录
yum install tree >/dev/null 2>&1
rm -rf /var/offline_install.log
touch /var/offline_install.log 
LOG_FILE="/var/offline_install.log"

# 校验离线包完整性
echo "1.校验离线安装包"
REQUIRED_FILES=(
  "mssql-server-*.rpm"         # 主程序包
  "mssql-tools-*.rpm"          # 命令行工具
  "unixODBC-*.rpm"             # 关键依赖
)
for file in "${REQUIRED_FILES[@]}"; do
  if ! ls $INSTALL_DIR/$file &> /dev/null; then
    echo "缺失文件:$file,请检查$INSTALL_DIR目录" >&2
    exit 1
  fi
done

# 安装基础依赖
echo "2.安装系统依赖"
yum install -y gcc glibc-devel libstdc++-devel >/dev/null 2>&1
yum -y install firewalld policycoreutils-python libsss_nss_idmap libatomic python3 >> $LOG_FILE 2>&1 || {
  echo "依赖安装失败,请检查离线包中的ODBC等组件"; exit 1
}

# 安装主程序(自动处理依赖顺序)
echo "3.安装SQL Server组件..."
##yum remove mssql-server -y
##rm -rf /var/opt/mssql/
rpm -ivh $INSTALL_DIR/unixODBC-*.rpm >> $LOG_FILE 2>&1
rpm -ivh $INSTALL_DIR/mssql-server-*.rpm >> $LOG_FILE 2>&1
rpm -ivh $INSTALL_DIR/msodbcsq*.rpm >> $LOG_FILE 2>&1

# 初始配置
echo "4.运行初始配置"
sudo MSSQL_SA_PASSWORD=$SA_PASSWORD \
MSSQL_PID=$INSTALL_MODE \
MSSQL_TCP_PORT='1433' \
ACCEPT_EULA=Y \
/opt/mssql/bin/mssql-conf -n setup

# 防火关闭
echo "5.关闭防火墙"
systemctl stop firewalld.service  >/dev/null 2>&1
systemctl disable firewalld.service  >/dev/null 2>&1 
systemctl status firewalld.service  >/dev/null 2>&1

## 关闭SELinux
sed -i '/^SELINUX=/d' /etc/selinux/config
echo "SELINUX=disabled" >> /etc/selinux/config
# cat /etc/selinux/config|grep "SELINUX=disabled"
setenforce 0 >/dev/null 2>&1

# 验证安装
echo "6.验证服务状态"
if ! systemctl is-active mssql-server &> /dev/null; then
  echo "服务未运行,检查日志:/var/opt/mssql/log/errorlog" >&2
  exit 1
fi

# 安装命令行工具
echo "7.安装SQLCMD工具"
rpm -ivh $INSTALL_DIR/mssql-tools-*.rpm >> $LOG_FILE 2>&1
cat << EOF >> /etc/profile.d/mssql.sh
export PATH=\$PATH:/opt/mssql-tools/bin
EOF

source /etc/profile.d/mssql.sh

echo "8.安装成功!连接命令"
echo "sqlcmd -S localhost -U sa -P '$SA_PASSWORD'"
echo "详细日志:$LOG_FILE"
相关推荐
小杨40417 分钟前
springboot框架项目实践应用三(监控运维组件admin)
spring boot·后端·监控
sevevty-seven2 小时前
Spring Boot 自动装配原理详解
java·spring boot·后端
lamdaxu2 小时前
分布式调用(02)
后端
daiyunchao2 小时前
让Pomelo支持HTTP协议
后端
芒猿君3 小时前
AQS——同步器框架之源
后端
SaebaRyo3 小时前
手把手教你在网站中启用https和http2
后端·nginx·https
A-Kamen3 小时前
Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现与实战指南
java·spring boot·后端
豆豆酱3 小时前
Transformer结构详解
后端
upsilon3 小时前
golang切片slice
后端·go
狂奔小菜鸡3 小时前
Java运行时数据区
java·jvm·后端