首页 > 数据库 >基于二进制软件包 —安装 MySQL-8.0.28

基于二进制软件包 —安装 MySQL-8.0.28

时间:2024-06-23 19:58:51浏览次数:33  
标签:8.0 mysql 28 dev etc MYSQL MySQL null check

#!/bin/bash
#
#********************************************************************
#Author:			Kevin
#Date: 				2024-06-23
#FileName:			install_mysql.sh
#Description:		The test script
#Copyright (C): 	2024 All rights reserved
#********************************************************************

##################### 事先需上传软件包 ###############################

SCRIPT_NAME=$(basename $0)
COLOR="echo -e \e[1;32m"
END="\e[0m"
SRC_DIR='/usr/local/src'
SYSTEM_FILE="/etc/*-release"
MYSQL_FILE='mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz'
MYSQL_ROOT_PASSWORD='bufushu'

# 加载函数
source /etc/profile.d/color.sh

# 检查用户
check_user(){
	if [ ! $UID -eq 0 ];then 
		{ color "${SCRIPT_NAME}: 当前用户不是root,安装失败" 1 ; exit ; }
	fi
}

# 检查操作系统
check_os(){
	if grep -Ewqi  "Rocky|CentOS"  /etc/issue  ||  grep -Ewqi  "Rocky|CentOS"  /etc/*-release ;then  
        if ! rpm -q redhat-lsb-core &> /dev/null ;then
			dnf -y install redhat-lsb-core &> /dev/null 
			color "${SCRIPT_NAME}: lsb_release 工具安装完成." 0 
		fi
		OS_ID=$(lsb_release -si)
		OS_VERSION=$(lsb_release -sr | sed -nr 's/(^.*)\..*$/\1/p')
	fi
}

# 二进制文件存在性检查
check_file(){
    cd ${SRC_DIR}
    if [ ! -e ${MYSQL_FILE}  ];then
        $COLOR"缺少 ${MYSQL_FILE} 文件."$END 
        $COLOR"请将相关软件放在 ${SRC_DIR} 目录下."$END
        exit
    elif [ -e /usr/local/mysql ];then
        color "${SCRIPT_NAME}: MySQL 数据库已存在,安装失败." 1
        exit
    else
        return
     fi
} 

# 开始安装mysql数据库
install_mysql(){
    cd ${SRC_DIR}
    
    # 安装依赖包
    ${COLOR}''开始下载 \'MySQL\' 依赖包,请稍等...''${END}
    dnf -y install libaio perl-Data-Dumper ncurses-compat-libs &>/dev/null
    
    # 解包
    ${COLOR}''开始安装 \'MySQL\' 数据库,请稍等...''${END}
    tar xf ${MYSQL_FILE} -C /usr/local
    
    # 创建软链接
    MYSQL_DIR=$(echo ${MYSQL_FILE}|sed -rn 's/(^.*[0-9]+).*/\1/p')
    ln -s  ${MYSQL_DIR}  ../mysql
    
    # 创建系统用户和组
	if ! id -u mysql &> /dev/null ; then
		groupadd -g 3306 mysql
		useradd -r -g 3306 -s /sbin/nologin mysql
		color "mysql 用户创建成功." 0
	fi
	chown -R mysql.mysql /usr/local/mysql
	
	# 添加PATH变量
	echo "PATH=/usr/local/mysql/bin/:$PATH" > /etc/profile.d/mysql.sh
	. /etc/profile.d/mysql.sh
	
	# 编写配置文件
	cat > /etc/my.cnf <<-EOF
	[mysqld]
	server-id=1
	log-bin
	datadir=/data/mysql
	socket=/data/mysql/mysql.sock
	log-error=/data/mysql/mysql.log
	pid-file=/data/mysql/mysql.pid
	
	[client]
	socket=/data/mysql/mysql.sock
	EOF
    
    # 创建数据目录,设置目录权限
	[ -d /data/mysql ] || mkdir -p /data/mysql &> /dev/null
    chown -R  mysql.mysql /data/mysql
    
	
	# 初始化MySQl数据库 生成服务脚本
	mysqld --initialize --user=mysql --datadir=/data/mysql 
    cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysqld
    
    
    # 添加服务列表
    if [ ${OS_ID} == "Rocky" -o ${OS_ID} == "CentOS" ];then
        chkconfig --add mysqld 
        chkconfig mysqld on 
        service mysqld start &>/dev/null
    fi

	# 获取数据库旧密码
	MYSQL_OLDPASSWORD=`grep "password" /data/mysql/mysql.log  | sed -nr 's/^.* (.*)$/\1/p'`
    
    # 设置数据库新密码
    mysqladmin  -uroot -p${MYSQL_OLDPASSWORD} password ${MYSQL_ROOT_PASSWORD} &>/dev/null
    color "${SCRIPT_NAME}: MySQL数据库安装完成.  " 0  
}

main(){
    check_user
    check_os
    check_file
    check_mysql
    install_mysql
}
main

标签:8.0,mysql,28,dev,etc,MYSQL,MySQL,null,check
From: https://www.cnblogs.com/cherish-mi/p/18263830

相关文章

  • MySQL中实现查询并按需要排序
    在MySQL中,实现查询并按需要排序主要使用SELECT语句,并结合ORDERBY子句。以下是一些基本的使用示例:基本查询和排序 SELECTcolumn1,column2,...FROMtable_nameORDERBYcolumn1ASC,column2DESC;column1,column2,...:你想查询的列名。table_name:你想查询的表名。......
  • 【面试宝典】28道Java集合高频题库整理(附答案背诵版)
    常见的集合有哪些?常见的Java集合可以分为两大类:Collection和Map。Collection接口下主要有以下几种实现:List:有序的集合,其中的元素可以重复。ArrayList:基于动态数组实现,查询速度快,但在中间插入和删除元素时速度较慢。LinkedList:基于双向链表实现,插入和删除速......
  • [MYSQL] 数据库基础
    1.什么是数据库从数据库的名字可以看出,它是用来操作(增删查改....)数据的,事实上也的确如此,通过数据库,我们可以更方便.更高效的来操作.管理数据以文件形式存储数据的缺点文件的安全问题文件不利于数据的查询和删除文件不利于存储海量数据操作文件并不方便为了解决上述......
  • Day28.property使用part2
    1.property使用part2_多次调用类中的函数方法property用法,案例一代码如下:'''案例一'''classPeople:def__init__(self,name):self.__name=namedefget_name(self):returnself.__namedefset_name(self,val):......
  • MySQL 数据抽稀 每分钟取一条
    抽稀十分钟一条WITHdata_01AS(SELECT*FROMcd_ret_well_resulttrWHEREwell_name='74-77'andMOD(MINUTE(inputtime),10)=0ORDERBYinputtimeasc),data_02AS(SELECT*,ROW_NUMBER()OVER(PARTITIONBYDATE_FORMAT(inputtime,'%Y-%m-%d%H:%i'......
  • 如何开启MySQL远程访问权限允许远程连接?
    如何开启MySQL远程访问权限允许远程连接? 当需要允许远程连接MySQL时,你可以按照以下方法进行配置:1.改表法:如果你的MySQL帐号仅允许在本地登陆,而不允许远程登陆,你可以通过更改\mysql\数据库中的\user\表来修改\host\项。-在本地MySQL中,执行以下命令:mysql-uroot-p-进......
  • 价格减免(Lc2288)——模拟
    句子 是由若干个单词组成的字符串,单词之间用单个空格分隔,其中每个单词可以包含数字、小写字母、和美元符号 '$' 。如果单词的形式为美元符号后跟着一个非负实数,那么这个单词就表示一个 价格 。例如 "$100"、"$23" 和 "$6" 表示价格,而 "100"、"$" 和 "$1e5 不是。......
  • mysql索引
    2024.6.231.简单地说是const是直接按主键或唯一键读取,eq_ref用于联表查询的情况,按联表的主键或唯一键联合查询。const该表最多有一个匹配行,在查询开始时读取。由于只有一行,因此该行中列的值可以被优化器的其余部分视为常量。const表非常快,因为它们只读一次。const用于将......
  • MySQL8-中文参考-十九-
    MySQL8中文参考(十九)原文:docs.oracle.com/javase/tutorial/reallybigindex.html11.4 用户定义变量原文:dev.mysql.com/doc/refman/8.0/en/user-variables.html您可以在一个语句中将值存储在用户定义变量中,并在另一个语句中引用它。这使您可以从一个语句传递值到另一个语句......
  • MySQL8-中文参考-四十-
    MySQL8中文参考(四十)原文:docs.oracle.com/javase/tutorial/reallybigindex.html原文:dev.mysql.com/doc/refman/8.0/en/mysql-cluster-system-definition.html25.4.3.8 定义系统[system]部分用于适用于整个集群的参数。Name系统参数用于MySQLEnterpriseMonitor;Confi......