二进制安装MySQL脚本

    科技2024-08-17  23

    MySQL的二进制安装脚本


    重要说明(一)

    MySQL 5.6以及旧版本,直接安装即可空密码登录!MySQL 5.7以及新版本,安装后在日志中生成一次性root密码,第一次登录后必须先修改密码以下安装 5.7 和 8.0 脚本已将初始密码修改为 centos安装 5.7 和 8.0 之后,安全加固脚本使用了 expect 语句,注意语法 # MySQL 5.7 以及新版本 初始化操作: cd /usr/local/mysql/ ./scripts/mysql_install_db --initialize --datadir=/data/mysql --user=mysql 其中选项 --initialize 就是'生成初始密码的原因!!!!' 因此 MySQL 5.7 以及新版本的安装,在这一步骤中必须添加此选项 # 注意!!!!!!!!!!!!!! MariaDB各个版本的安装都不能加上此选项!!!!!!!!!!!!!!

    重要说明(二)

    各个版本安装包中内容会有所不同,注意检查是否有【 service unit 】文件以下所有版本安装均使用 /etc/rc.d/init.d/目录实现开机自启 只有存在 service unit 文件,才能够将其拷贝至'/usr/lib/systemd/system/'目录 从而达到 使用`systemctl`进行控制 的效果!!!!!! # 否则就只能使用目录'/etc/rc.d/init.d/',用于存放服务启动脚本!!

    重要说明(三)

    注意:从10.4版本开始,安全加固脚本多了一个提问!出现在第二题!!

    此项会导致一个变化:安装完毕之后,若当前用户是系统root,则能够以数据库 root 身份空口令登录!!

    这是一种更新机制,不是bug 理由:系统 root 账户具有所有权限,应该有空口令登录数据库的特权

    详细解释与解决方法:https://www.chaoswork.cn/1107.html

    # 若想禁止空口令登录,只需要一条SQL语句 # 登录数据库之后执行: ALTER USER root@localhost IDENTIFIED VIA mysql_native_password USING PASSWORD("passwd") '其中passwd即为你想要设置的密码

    MySQL 5.6

    #!/bin/bash DIR=`pwd` NAME="mysql-5.6.47-linux-glibc2.12-x86_64.tar.gz" FULL_NAME=${DIR}/${NAME} yum install -y libaio perl-Data-Dumper libncurses* if [ ! -f ${FULL_NAME} ];then    echo "package not found" exit 1 fi if [ -h /usr/local/mysql ];then echo "MySQL is already installed" exit 2 fi if id mysql &> /dev/null ; then userdel -f -r mysql &> /dev/null fi useradd -r -s /sbin/nologin mysql mkdir -pv /data/mysql chown mysql:mysql /data/mysql tar xf ${FULL_NAME} -C /usr/local cd /usr/local ln -sv mysql-5.6.47-linux-glibc2.12-x86_64 mysql chown -R root:root /usr/local/mysql/ cat > /etc/my.cnf << EOF [mysqld] datadir=/data/mysql EOF cd /usr/local/mysql/ ./scripts/mysql_install_db --datadir=/data/mysql --user=mysql cp support-files/mysql.server /etc/rc.d/init.d/mysqld chkconfig --add mysqld service mysqld start ln -sv /usr/local/mysql/bin/* /usr/bin/ mysql_secure_installation << EOF y centos centos y y y y EOF

    MySQL 5.7

    ############ 安装8.0只需要修改包名即可 ############## '注意后缀是 gz 还是 xz' # 安装包 mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz # 脚本内容 #!/bin/bash # 准备环境与变量 DIR=`pwd` PACKAGE="mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz" NAME="mysql-5.7.29-linux-glibc2.12-x86_64" FULL_NAME=${DIR}/${PACKAGE} echo -e "\e[1;32m正在准备安装环境,请等待。。。\e[0m" yum install -y libaio perl-Data-Dumper libncurses* ncurses* &> /dev/null echo -e "\e[1;32m环境准备OK\e[0m" # 安装环境检查 if [ ! -f ${FULL_NAME} ] ; then    echo "package not found" exit 1 fi if [ -h /usr/local/mysql ] ; then echo "MySQL is already installed" exit 2 fi echo -e "\e[1;32m正在安装MySQL数据库,请等待。。。\e[0m" # mysql用户检查 if id mysql &> /dev/null ; then userdel -f -r mysql &> /dev/null fi useradd -r -s /sbin/nologin mysql # 解压 tar xf $PACKAGE -C /usr/local cd /usr/local/ ln -s $NAME/ mysql &> /dev/null chown -R root.root /usr/local/mysql/ # 设置PATH路径 ln -sv /usr/local/mysql/bin/* /usr/bin/ &> /dev/null # 编辑配置文件 cat > /etc/my.cnf << EOF [mysqld] datadir=/data/mysql skip_name_resolve=1 socket=/data/mysql/mysql.sock     log-error=/data/mysql/mysql.log pid-file=/data/mysql/mysql.pid [client] socket=/data/mysql/mysql.sock EOF # 初始化数据库 mysqld --initialize --user=mysql --datadir=/data/mysql PASSWD=`awk '/temporary password/{print $NF}' /data/mysql/mysql.log` # 服务启动脚本与开机自启 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld chkconfig --add mysqld service mysqld start # 修改初始密码 mysqladmin -uroot -p"$PASSWD" password centos &> /dev/null # 安全加固 【注意此处调用了expect语法】 yum -y install expect &> /dev/null expect &> /dev/null <<EOF spawn mysql_secure_installation expect { "Enter password" { send "centos\n";exp_continue } "Press y" { send "n\n";exp_continue } "Change the password" { send "n\n";exp_continue } "Remove anonymous users" { send "y\n";exp_continue } "Disallow root login" { send "y\n";exp_continue } "Remove test database" { send "y\n";exp_continue } "Reload privilege" { send "y\n" } } EOF echo -e "\e[1;32mMySQL数据库安装完成!\e[0m"

    MySQL 8.0

    ## 包名 mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz 注意后缀'xz' #!/bin/bash # #******************************************** #Author: jacklee #QQ: 1227163339 #Time: 2020-09-29_19:24:59 #FileName: ins.sh #Copyright: 2020 All rights reserved #Description: #********************************************* # 准备环境与变量 DIR=`pwd` PACKAGE="mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz" NAME="mysql-8.0.19-linux-glibc2.12-x86_64" FULL_NAME=${DIR}/${PACKAGE} echo -e "\e[1;32m正在准备安装环境,请等待。。。\e[0m" yum install -y libaio perl-Data-Dumper libncurses* ncurses* &> /dev/null # 安装环境检查 if [ ! -f ${FULL_NAME} ] ; then echo "package not found" exit 1 fi if [ -h /usr/local/mysql ] ; then echo "mysql is already installed" exit 2 fi echo -e "\e[1;32m正在安装MySQL数据库,请等待。。。\e[0m" # mysql用户检查 if id mysql &> /dev/null ; then userdel -f -r mysql &> /dev/null fi useradd -r -s /sbin/nologin mysql # 解压 tar xf $PACKAGE -C /usr/local cd /usr/local/ ln -s $NAME/ mysql &> /dev/null chown -R root.root /usr/local/mysql/ # 设置PATH路径 ln -sv /usr/local/mysql/bin/* /usr/bin/ &> /dev/null # 编辑配置文件 cat > /etc/my.cnf << EOF [mysqld] datadir=/data/mysql skip_name_resolve=1 socket=/data/mysql/mysql.sock     log-error=/data/mysql/mysql.log pid-file=/data/mysql/mysql.pid [client] socket=/data/mysql/mysql.sock EOF # 初始化数据库 mysqld --initialize --user=mysql --datadir=/data/mysql PASSWD=`awk '/temporary password/{print $NF}' /data/mysql/mysql.log` # 服务启动脚本与开机自启 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld chkconfig --add mysqld service mysqld start # 修改初始密码 mysqladmin -uroot -p"$PASSWD" password centos &> /dev/null # 安全加固 【注意此处调用了expect语法】 yum -y install expect &> /dev/null expect &> /dev/null <<EOF spawn mysql_secure_installation expect { "Enter password" { send "centos\n";exp_continue } "Press y" { send "n\n";exp_continue } "Change the password" { send "n\n";exp_continue } "Remove anonymous users" { send "y\n";exp_continue } "Disallow root login" { send "y\n";exp_continue } "Remove test database" { send "y\n";exp_continue } "Reload privilege" { send "y\n" } } EOF echo -e "\e[1;32mMySQL数据库安装完成!\e[0m"

    MariaDB 10.2.31

    # 安装包 mariadb-10.2.31-linux-systemd-x86_64.tar.gz # 脚本内容 #!/bin/bash # 准备环境与变量 DIR=`pwd` PACKAGE="mariadb-10.2.31-linux-systemd-x86_64.tar.gz" NAME="mariadb-10.2.31-linux-systemd-x86_64" INS_DIR="/usr/local" FULL_NAME=${DIR}/${PACKAGE} echo -e "\e[1;32m正在准备安装环境,请等待。。。\e[0m" yum install -y libaio perl-Data-Dumper libncurses* ncurses* &> /dev/null echo -e "\e[1;32m环境准备OK\e[0m" # 安装环境检查 if [ ! -f ${FULL_NAME} ] ; then    echo "package not found" exit 1 fi if [ -h ${INS_DIR}/mysql ] ; then echo "MariaDB is already installed" exit 2 fi echo -e "\e[1;32m正在安装MySQL数据库,请等待。。。\e[0m" # mysql用户检查 if id mysql &> /dev/null ; then userdel -f -r mysql fi useradd -r -s /sbin/nologin mysql # 解压、软链接、文件属性 tar xf $PACKAGE -C $INS_DIR cd $INS_DIR ln -s $INS_DIR/$NAME $INS_DIR/mysql &> /dev/null chown -R root.root $INS_DIR/mysql/ # 设置PATH路径 ln -s $INS_DIR/mysql/bin/* /usr/bin/ &> /dev/null # 编辑配置文件 cat > /etc/my.cnf << EOF [mysqld] datadir=/data/mysql skip_name_resolve #socket=/data/mysql/mysql.sock #log-error=/data/mysql/mysql.log #pid-file=/data/mysql/mysql.pid EOF # 初始化数据库 cd $INS_DIR/mysql ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql &> /dev/null # 服务启动脚本与开机自启 cp -a $INS_DIR/mysql/support-files/mysql.server /etc/init.d/mysqld chkconfig --add mysqld service mysqld start # 安全加固 mysql_secure_installation &> /dev/null << EOF y centos centos y y y y EOF echo -e "\e[1;32mMySQL数据库安装完成!\e[0m"

    MariaDB 10.5.5

    # 安装包 mariadb-10.5.5-linux-systemd-x86_64.tar.gz # 脚本内容 #!/bin/bash # 准备环境与变量 DIR=`pwd` PACKAGE="mariadb-10.5.5-linux-systemd-x86_64.tar.gz" NAME="mariadb-10.5.5-linux-systemd-x86_64" INS_DIR="/usr/local" FULL_NAME=${DIR}/${PACKAGE} echo -e "\e[1;32m正在准备安装环境,请等待。。。\e[0m" yum install -y libaio perl-Data-Dumper libncurses* ncurses* &> /dev/null echo -e "\e[1;32m环境准备OK\e[0m" # 安装环境检查 if [ ! -f ${FULL_NAME} ] ; then    echo "package not found" exit 1 fi if [ -h ${INS_DIR}/mysql ] ; then echo "MariaDB is already installed" exit 2 fi echo -e "\e[1;32m正在安装MariaDB数据库,请等待。。。\e[0m" # mysql用户检查 if id mysql &> /dev/null ; then userdel -f -r mysql fi useradd -r -s /sbin/nologin mysql # 解压、软链接、文件属性 tar xf $PACKAGE -C $INS_DIR cd $INS_DIR ln -s $INS_DIR/$NAME $INS_DIR/mysql &> /dev/null chown -R root.root $INS_DIR/mysql/ # 设置PATH路径 ln -s $INS_DIR/mysql/bin/* /usr/bin/ &> /dev/null # 编辑配置文件 cat > /etc/my.cnf << EOF [mysqld] datadir=/data/mysql skip_name_resolve #socket=/data/mysql/mysql.sock #log-error=/data/mysql/mysql.log #pid-file=/data/mysql/mysql.pid EOF # 初始化数据库 cd $INS_DIR/mysql ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql &> /dev/null # 服务启动脚本与开机自启 cp -a $INS_DIR/mysql/support-files/mysql.server /etc/init.d/mysqld chkconfig --add mysqld service mysqld start # 安全加固 mysql_secure_installation &> /dev/null << EOF y y centos centos y y y y EOF echo -e "\e[1;32mMariaDB数据库安装完成!\e[0m"
    Processed: 0.018, SQL: 8