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

📢📢📢📣📣📣

作者:IT邦德

中国DBA联盟(ACDU)成员,10余年DBA工作经验

Oracle、PostgreSQL ACE

CSDN博客专家及B站知名UP主,全网粉丝10万+

擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复,

安装迁移,性能优化、故障应急处理

文章目录

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

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

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

1.Oracle脚本

复制代码
【脚本说明】
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邦德

#!/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脚本

复制代码
【脚本说明】
1、下载PG源码安装包后上传到/opt目录下
2、ISO系统镜像需要挂载,后期用于YUM
3、MY_SERVER_IP、MY_HOSTNAME根据自己环境修改
4、PG_VERSION为版本号,如果其他版本请更改
直接执行脚本,自动化安装,本脚本适用于Linux7,其他操作系统可能涉及yum的配置不同,请自行修改
脚本创作不易,请多多支持,关注公众号:IT邦德

#!/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脚本

复制代码
【脚本说明】
1、下载MySQL二进制安装包后上传到/opt目录下
2、ISO系统镜像需要挂载,后期用于YUM
3、脚本中最后修了root密码为:Jeames@007
4、脚本中配置了二进制自启动数据库到服务
直接执行脚本,自动化安装,本脚本适用于Linux7,
其他操作系统可能涉及yum的配置不同,请自行修改
脚本创作不易,请多多支持!

#!/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脚本

复制代码
【脚本说明】
1、下载SQL server RPM包上传到/opt目录下
2、建议服务器内存需≥4GB,建议swap空间≥2GB
3. SQL server RPM可以通过官网下载
https://learn.microsoft.com/zh-cn/
直接执行脚本,自动化安装,本脚本适用于Linux7,
其他操作系统可能涉及yum的配置不同,请自行修改
脚本创作不易,请多多支持!

#!/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"
相关推荐
憧憬成为web高手9 分钟前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
段一凡-华北理工大学22 分钟前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
oradh2 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
z123456789863 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD3 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
TlSfoward4 小时前
抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具
数据库·爬虫·网络协议·搜索引擎·php
数智化管理手记4 小时前
账龄分析手工统计易遗漏?自动账龄分析工具怎么搭建
大数据·网络·数据库·人工智能·数据挖掘
LabVIEW开发5 小时前
NI Package Manager安装LabVIEW时InternalServerError错误
网络·数据库·labview·labview知识·labview功能·labview程序
SelectDB5 小时前
PostgreSQL 实时同步到 Apache Doris:一站式 CDC 解决方案
数据库
欲速不达88205 小时前
Mysql并发DML锁等待的优化
数据库·mysql