首页
服务端开发/管理

分类

当前位置: 云海天教程网 > 技术新闻 > 服务端开发/管理 >正文

mysql二进制安装脚本部署

更新时间:2022-09-21  作者:佚名   来源: 网络转载

mysql二进制安装脚本部署


目录
  • mysql二进制安装脚本部署
    • 单实例
    • 使用函数的单实例
    • 使用函数的单实例或者多实例

单实例

[root@localhost ~]# mkdir mysql   //创建存放脚本目录
[root@localhost ~]# ls
anaconda-ks.cfg  mysql
[root@localhost ~]# cd mysql/
[root@localhost mysql]# mkdir files  //创建安装包目录
[root@localhost mysql]# ls
files
[root@localhost mysql]# ls files/
mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz
[root@localhost mysql]# touch mysql_install.sh  //创建脚本文件
[root@localhost mysql]# chmod +x mysql_install.sh  //赋予执行权限
[root@localhost mysql]# ll
total 0
drwxr-xr-x. 2 root root 56 Sep 19 21:16 files
-rwxr-xr-x. 1 root root  0 Sep 19 21:18 mysql_install.sh
[root@localhost mysql]# vim mysql_install.sh 
[root@localhost mysql]# cat mysql_install.sh 
#!/bin/bash

#设置执行权限
if [ $UID -ne 0 ];then
        echo "请以管理员用户进行执行"
        exit
fi
read -p "请输入要创建的实例个数: " count
read -p "请输入数据存放目录(默认路径: /opt/xbz): " datadir
read -p "请输入要为数据库设置的密码: " passwd
read -p "请输入安装目录,(默认路径:/usr/local/mysql):" mysql_install_dir
#判断安装目录合法性
echo $mysql_install_dir | grep -E "^/[a-z][a-z]*(/[a-z][a-z]*)*$" &> /dev/null
if [ $? -eq 0 ];then
    if [ ! -d $mysql_install_dir ];then
        mkdir -p $mysql_install_dir
    fi
else
    mysql_install_dir=/usr/local/mysql
fi
#判断安装目录是否为空
if [ -z $mysql_install_dir ];then
    mysql_install_dir=/usr/local/mysql
fi

#创建用户
id mysql &> /dev/null
if [ $? -ne 0 ];then
        useradd -r -M -s /sbin/nologin mysql
    else
            echo "用户已存在"
fi
#安装依赖包
dnf -y install ncurses-compat-libs 
#解压软件包,修改目录和所属组
if [ ! -d $mysql_install_dir ];then
    echo "解压软件包"
    tar xf files/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz -C /usr/local
    cd /usr/local
    mv mysql-5.7.38-linux-glibc2.12-x86_64 mysql
fi
chown -R mysql.mysql ${mysql_install_dir}
#设置环境变量
echo "export PATH=${mysql_install_dir}/lib" > /etc/ld.so.conf.d/mysql.conf
#做头文件
ln -s ${mysql_install_dir}/include /usr/include/mysql
#配置lib
echo "${mysql_install_dir}/lib" > /etc/ld.so.conf.d/mysql.conf
ldconfig
#设置man文档
grep "${mysql_install_dir}/man" /etc/man_db.conf &> /dev/null
if [ $? -ne 0 ];then
        sed -i "22a MANDATORY_MANPATH                       ${mysql_install_dir}/man" /etc/man_db.conf
fi
#建立数据存放目录
for i in $(seq $count);do
    if [ $count -eq 1 ];then
            if [ -z $datadir ];then
                datadir=/opt/xbz
            fi
            if [ ! -d $datadir ];then
                mkdir -p $datadir
            fi      
            chown -R mysql.mysql $datadir
            ${mysql_install_dir}/bin/mysqld --initialize --user mysql --datadir $datadir &> /tmp/passwd
#生成数据配置文件
            cat > /etc/my.cnf << EOF
[mysqld]
basedir = ${mysql_install_dir}
datadir = $datadir
socket = /tmp/mysql.sock 
port = 3306 
pid-file = $datadir/mysql.pid 
user = mysql 
skip-name-resolve 
EOF
#配置服务启动脚本
if [ ! -f /etc/init.d/mysqld ];then
        cp  -a   ${mysql_install_dir}/support-files/mysql.server /etc/init.d/mysqld
        sed -ri  "/^basedir=/c basedir=${mysql_install_dir}" /etc/init.d/mysqld
        sed -ri  "/^datadir=/c datadir=$datadir" /etc/init.d/mysqld
fi
chmod +x /etc/init.d/mysqld
#启动mysql并设置开机自启
service mysqld start
sleep 6
chkconfig --add mysqld
ln -s ${mysql_install_dir}/bin/mysql /usr/bin
password=$(grep "password" /tmp/passwd |awk "{print $NF}")
mysql -uroot -p$password --connect-expired-password -e "set password = password("$passwd");"
echo "数据库的密码是: $passwd"
    fi
done
验证:
[root@localhost mysql]# mysql -uroot -p"lnh@321"
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 3
Server version: 5.7.38 MySQL Community Server (GPL)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type "help;" or "h" for help. Type "c" to clear the current input statement.

mysql> exit
Bye

使用函数的单实例

[root@localhost mysql]# cat mysql_install.sh 
#!/bin/bash

#设置执行权限
if [ $UID -ne 0 ];then
        echo "请以管理员用户进行执行"
        exit
fi

function init(){
id mysql &> /dev/null
if [ $? -ne 0 ];then
        useradd -r -M -s /sbin/nologin mysql
    else
            echo "用户已存在"
fi
#安装依赖包
dnf -y install ncurses-compat-libs 
#解压软件包,修改目录和所属组
if [ ! -d $mysql_install_dir ];then
    echo "解压软件包"
    tar xf files/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz -C /usr/local
    cd /usr/local
    mv mysql-5.7.38-linux-glibc2.12-x86_64 mysql
else
    echo "mysql已安装,不需要重复安装"
    exit
fi
chown -R mysql.mysql ${mysql_install_dir}
#设置环境变量
echo "export PATH=${mysql_install_dir}/lib" > /etc/ld.so.conf.d/mysql.conf
#做头文件
ln -s ${mysql_install_dir}/include /usr/include/mysql
#配置lib
echo "${mysql_install_dir}/lib" > /etc/ld.so.conf.d/mysql.conf
ldconfig
#设置man文档
grep "${mysql_install_dir}/man" /etc/man_db.conf &> /dev/null
if [ $? -ne 0 ];then
        sed -i "22a MANDATORY_MANPATH                       ${mysql_install_dir}/man" /etc/man_db.conf
fi
}
function init2(){

            if [ -z $datadir ];then
                datadir=/opt/xbz
            fi
            if [ ! -d $datadir ];then
                mkdir -p $datadir
            fi
            chown -R mysql.mysql $datadir
}

function single(){
    init        
#建立数据存放目录
for i in $(seq $count);do
    if [ $count -eq 1 ];then
        init2           
#判断是否已格式化           
            content=$(ls -l $datadir | grep -v total | wc -l)
            if [ $content -eq 0 ];then
                ${mysql_install_dir}/bin/mysqld --initialize --user mysql --datadir $datadir &> /tmp/passwd
            else
                echo "不需要重复初始化"
                exit
            fi
#生成数据配置文件
            cat > /etc/my.cnf << EOF
[mysqld]
basedir = ${mysql_install_dir}
datadir = $datadir
socket = /tmp/mysql.sock 
port = 3306 
pid-file = $datadir/mysql.pid 
user = mysql 
skip-name-resolve 
EOF
#配置服务启动脚本
if [ ! -f /etc/init.d/mysqld ];then
        cp  -a   ${mysql_install_dir}/support-files/mysql.server /etc/init.d/mysqld
        sed -ri  "/^basedir=/c basedir=${mysql_install_dir}" /etc/init.d/mysqld
        sed -ri  "/^datadir=/c datadir=$datadir" /etc/init.d/mysqld
fi
chmod +x /etc/init.d/mysqld
#启动mysql并设置开机自启
service mysqld start
sleep 6
chkconfig --add mysqld
ln -s ${mysql_install_dir}/bin/mysql /usr/bin
password=$(grep "password" /tmp/passwd |awk "{print $NF}")
mysql -uroot -p$password --connect-expired-password -e "set password = password("$passwd");"
echo "mysql安装成功,数据库的密码是: $passwd"
    fi
done
}
read -p "请输入要创建的实例个数: " count
read -p "请输入安装目录,(默认路径:/usr/local/mysql):" mysql_install_dir
read -p "请输入数据存放目录(默认路径: /opt/xbz): " datadir
read -p "请输入要为数据库设置的密码(默认密码123456): " passwd
#判断安装目录合法性
echo $mysql_install_dir | grep -E "^/[a-z][a-z]*(/[a-z][a-z]*)*$" &> /dev/null
if [ $? -eq 0 ];then
    if [ ! -d $mysql_install_dir ];then
        mkdir -p $mysql_install_dir
    fi
else
    mysql_install_dir=/usr/local/mysql
fi
#判断安装目录是否为空
if [ -z $mysql_install_dir ];then
    mysql_install_dir=/usr/local/mysql
fi
#判断数据存放目录是否为空
if [ -z $datadir ];then
    datadir=/opt/xbz
fi
#判断数据存放目录是否合法
echo $datadir | grep "^/[a-z][a-z]*(/[a-z][a-z]*)*$" &> /dev/null
if [ $? -ne 0 ];then
    datadir=/opt/xbz
fi
#设置数据库密码格式
if [ -z $passwd ];then
    passwd=123456
else
    echo $passwd | grep -E "[a-z]+" | grep -E "[A-Z]+" | grep -E "[0-9]+" | grep -E "_+" &> /dev/null
    if [ $? -ne 0 ] || [ ${#passwd} -lt 8 ];then
        passwd=123456
    fi
fi
#创建用户
if [ $count -eq 1 ];then
    single        
else
    echo "多实例"       
fi
验证:               
[root@localhost mysql]# mysql -uroot -p"123456"
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 3
Server version: 5.7.38 MySQL Community Server (GPL)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type "help;" or "h" for help. Type "c" to clear the current input statement.

mysql> exit
Bye

使用函数的单实例或者多实例

[root@localhost mysql]# cat mysql_install.sh 
#!/bin/bash

#设置执行权限
if [ $UID -ne 0 ];then
        echo "请以管理员用户进行执行"
        exit
fi

function init(){
id mysql &> /dev/null
if [ $? -ne 0 ];then
        useradd -r -M -s /sbin/nologin mysql
    else
            echo "用户已存在"
fi
#安装依赖包
dnf -y install ncurses-compat-libs perl 
#解压软件包,修改目录和所属组
if [ ! -d $mysql_install_dir ];then
    echo "解压软件包"
    tar xf files/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz -C /usr/local
    cd /usr/local
    mv mysql-5.7.38-linux-glibc2.12-x86_64 mysql
fi
chown -R mysql.mysql ${mysql_install_dir}
#设置环境变量
echo "export PATH=${mysql_install_dir}/lib" > /etc/ld.so.conf.d/mysql.conf
#做头文件
ln -s ${mysql_install_dir}/include /usr/include/mysql
#配置lib
echo "${mysql_install_dir}/lib" > /etc/ld.so.conf.d/mysql.conf
ldconfig
#设置man文档
grep "${mysql_install_dir}/man" /etc/man_db.conf &> /dev/null
if [ $? -ne 0 ];then
        sed -i "22a MANDATORY_MANPATH                       ${mysql_install_dir}/man" /etc/man_db.conf
fi
}
function init2(){

            if [ -z $datadir ];then
                datadir=/opt/xbz
            fi
            if [ ! -d $datadir ];then
                mkdir -p $datadir
            fi
            chown -R mysql.mysql $datadir
}
#单实例
function single(){
    init        
#建立数据存放目录
for i in $(seq $count);do
    if [ $count -eq 1 ];then
        init2           
#判断是否已格式化           
            content=$(ls -l $datadir | grep -v total | wc -l)
            if [ $content -eq 0 ];then
                ${mysql_install_dir}/bin/mysqld --initialize --user mysql --datadir $datadir &> /tmp/passwd
            else
                echo "不需要重复初始化"
                exit
            fi
#生成数据配置文件
            cat > /etc/my.cnf << EOF
[mysqld]
basedir = ${mysql_install_dir}
datadir = $datadir
socket = /tmp/mysql.sock 
port = 3306 
pid-file = $datadir/mysql.pid 
user = mysql 
skip-name-resolve 
EOF
#配置服务启动脚本
if [ ! -f /etc/init.d/mysqld ];then
        cp  -a   ${mysql_install_dir}/support-files/mysql.server /etc/init.d/mysqld
        sed -ri  "/^basedir=/c basedir=${mysql_install_dir}" /etc/init.d/mysqld
        sed -ri  "/^datadir=/c datadir=$datadir" /etc/init.d/mysqld
fi
chmod +x /etc/init.d/mysqld
#启动mysql并设置开机自启
service mysqld start
sleep 6
chkconfig --add mysqld
ln -s ${mysql_install_dir}/bin/mysql /usr/bin
password=$(grep "password" /tmp/passwd |awk "{print $NF}")
mysql -uroot -p"$password" --connect-expired-password -e "set password = password("$passwd");"
echo "mysql安装成功,数据库的密码是: $passwd"
    fi
done
}
#多实例
function multi(){
    init
    init2
    port=3306
#配置配置文件/etc/my.cnf
    cat > /etc/my.cnf <<EOF
[mysqld_multi]
mysqld = ${mysql_install_dir}/bin/mysqld_safe
mysqladmin = ${mysql_install_dir}/bin/mysqladmin
EOF
#创建各实例数据存放的目录并初始化各实例
    for i in $(seq $count);do
        mkdir -p ${datadir}/$port
        chown -R mysql.mysql ${datadir}
        content=$(ls -l ${datadir}/$port | grep -v total | wc -l)
        if [ $content -eq 0 ];then
                echo "正在初始化各实例"
                ${mysql_install_dir}/bin/mysqld --initialize --user=mysql --datadir=${datadir}/$port &> /tmp/passwd
#取出临时数据库密码
            password=$(grep "password" /tmp/passwd |awk "{print $NF}")
        else
            let port++
            continue        
        fi
#配置配置文件/etc/my.cnf
        cat >> /etc/my.cnf << EOF
[mysqld$port]
datadir = ${datadir}/$port
port = $port
socket = /tmp/mysql{$port}.sock
pid-file = ${datadir}/${port}/mysql_${port}.pid
log-error=/var/log/${port}.log
EOF
#启动各实例并修改数据库密码
        ln -s ${mysql_install_dir}/bin/my_print_defaults /usr/bin
        ${mysql_install_dir}/bin/mysqld_multi start ${port}
        sleep 6
        ln -s ${mysql_install_dir}/bin/mysql /usr/bin
        mysql -uroot -p"$password" -h127.0.0.1 -P${port} --connect-expired-password -e "set password = password("$passwd");"
        let port++
    done
    echo "mysql安装成功,数据库的密码是: $passwd"
}

read -p "请输入要创建的实例个数: " count
read -p "请输入安装目录,(默认路径:/usr/local/mysql):" mysql_install_dir
read -p "请输入数据存放目录(默认路径: /opt/xbz): " datadir
read -p "请输入要为数据库设置的密码(默认密码123456): " passwd
#判断安装目录合法性
echo $mysql_install_dir | grep -E "^/[a-z][a-z]*(/[a-z][a-z]*)*$" &> /dev/null
if [ $? -eq 0 ];then
    if [ ! -d $mysql_install_dir ];then
        mkdir -p $mysql_install_dir
    fi
else
    mysql_install_dir=/usr/local/mysql
fi
#判断安装目录是否为空
if [ -z $mysql_install_dir ];then
    mysql_install_dir=/usr/local/mysql
fi
#判断数据存放目录是否为空
if [ -z $datadir ];then
    datadir=/opt/xbz
fi
#判断数据存放目录是否合法
echo $datadir | grep "^/[a-z][a-z]*(/[a-z][a-z]*)*$" &> /dev/null
if [ $? -ne 0 ];then 
    datadir=/opt/xbz
fi
#设置数据库密码格式
if [ -z $passwd ];then
    passwd=123456
else
    echo $passwd | grep -E "[a-z]+" | grep -E "[A-Z]+" | grep -E "[0-9]+" | grep -E "_+" &> /dev/null
    if [ $? -ne 0 ] || [ ${#passwd} -lt 8 ];then
        passwd=123456
    fi
fi
#创建用户
if [ $count -eq 1 ];then
    single
    ss -antl    
else
    multi
    ss -antl
fi
验证:
[root@localhost mysql]# mysql -uroot -p"123456" -h127.0.0.1 -P3306
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 3
Server version: 5.7.38 MySQL Community Server (GPL)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type "help;" or "h" for help. Type "c" to clear the current input statement.

mysql> exit
Bye
[root@localhost mysql]# mysql -uroot -p"123456" -h127.0.0.1 -P3307
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 3
Server version: 5.7.38 MySQL Community Server (GPL)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type "help;" or "h" for help. Type "c" to clear the current input statement.

mysql> exit
Bye
[root@localhost mysql]# mysql -uroot -p"123456" -h127.0.0.1 -P3308
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 3
Server version: 5.7.38 MySQL Community Server (GPL)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type "help;" or "h" for help. Type "c" to clear the current input statement.

mysql> exit
Bye

上一篇:powerpoint 无法打开文件 下一篇:Java结构型设计模式之桥接模式详细讲解【java入门】
小编推荐
快速导航更多>>
JavaScript 教程 HTML5 教程 CSS3 教程 jQuery 教程 Vue.js 教程 Node.js 教程 SQL 教程 C 教程 PHP 教程 Linux 教程 Docker 教程 Nginx 教程 Python 教程 Java 教程

云海天教程网 版权所有

 陕公网安备 61050202000585号

陕ICP备14013131号-3