MySQL之ubuntu中使用脚本自动化安装MYSQL8.0系列的数据库

文章目录


0、MySQL通用二进制安装包下载

https://dev.mysql.com/downloads/mysql/
MySQL之ubuntu中使用脚本自动化安装MYSQL8.0系列的数据库_第1张图片
MySQL之ubuntu中使用脚本自动化安装MYSQL8.0系列的数据库_第2张图片
然后将二进制包拖入linux目录中,我这里的全路径是:/home/ocean/workspace/mysql/mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz

2、准备好一个可用的数据库目录,我这里是:/home/ocean/workspace/mysql/mysql-data

也可以根据需要修改脚本的SOURCE_GZ_FILE和DATA_DIR
在这里插入图片描述
3、切换到root目录下:

$ sudo su root

4、执行脚本

$ sh mysql.sh

MySQL之ubuntu中使用脚本自动化安装MYSQL8.0系列的数据库_第3张图片
备注:mysql.sh脚本内容是(创建一个mysql.sh脚本,直接将下面的内容复制到自己的脚本中即可,但是请根据自己的需要修改SOURCE_GZ_FILE和DATA_DIR):

#!/bin/bash

# 自备mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz或者其他版本的源码包 
# 安装mysql,使用脚本前请修改源码包在文件系统中的路径

SOURCE_GZ_FILE="/home/ocean/workspace/mysql/mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz"
DATA_DIR="/home/ocean/workspace/mysql/mysql-data"   #数据库存放数据的文件,建议放在挂载磁盘的某一个固定目录,并且必须是可用的目录
BASE_DIR="/usr/local" 




# 判断mysql是否安装
# :<
echo "检查mysql是否安装"
mysql -version > /dev/null 2>&1

if [ $? -ne 127 ];then
	echo "MYSQL已安装!"   
	mysql --version
	exit 0
fi

#!	
sudo dpkg -s libaio1 || sudo apt-get install libaio1 
# :<
echo "添加mysql用户组、用户..."
if id -g mysql > /dev/null 2>&1;then
    echo "mysql用户组已经存在"
else
    sudo groupadd mysql > /dev/null 2>&1 && echo "mysql用户组成功创建"
fi

if id -u mysql > /dev/null 2>&1;then
   echo "mysql用户已经存在"
else
   sudo useradd -r -g mysql -s /bin/false mysql > /dev/null 2>&1 && echo "mysql用户成功创建"	
fi

	
if [ ! -f ${SOURCE_GZ_FILE} ];then
   echo "${SOURCE_GZ_FILE}文件不存在!"
   exit 1
fi
	 
	
echo "创建安装目录..."
echo -n "请输入您要安装的MYSQL版本(例如:8.0.13):"
read version
INSTALL_DIR=${BASE_DIR}/mysql-${version}
if [ -d ${INSTALL_DIR} ];then
   echo "安装目录已存在,正在删除${INSTALL_DIR}..."
   sudo rm -rf ${INSTALL_DIR}
fi
sudo mkdir ${INSTALL_DIR}
echo "安装目录${INSTALL_DIR}已经成功创建"

echo "解压${SOURCE_GZ_FILE}到安装目录${INSTALL_DIR}..."
sudo tar -xvf ${SOURCE_GZ_FILE} -C ${INSTALL_DIR}
TEMP=`ls ${INSTALL_DIR}`
sudo cp -R -t ${INSTALL_DIR} ${INSTALL_DIR}/${TEMP}/*
sudo rm -rf ${INSTALL_DIR}/${TEMP}
echo "解压完毕!"


echo "创建链接"
cd ${BASE_DIR} && pwd
sudo ln -s mysql-${version} mysql

	
echo "添加环境变量"
echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
source /etc/profile
	
cat > /etc/my.cnf << EOF
[mysql]
prompt=(\\u@\\h) [\\d]>\\_
[mysqld]
port=3306
user=mysql
log_error=error.log
datadir=${DATA_DIR}
EOF
#!

echo "开始安装..."
cd ${BASE_DIR}/mysql && pwd
case $version in
  8.0*)
     # echo "安装MYSQL8.0系列"
     sudo mkdir mysql-files
     sudo chown mysql:mysql mysql-files
     sudo chmod 750 mysql-files
     sudo bin/mysqld --initialize  --user=mysql > /dev/null 2>&1
     # [ $? -eq 0 ] && echo "初始化MYSQL服务器成功"
     sudo bin/mysql_ssl_rsa_setup
     sudo bin/mysqld_safe --user=mysql &  
     sudo cp support-files/mysql.server /etc/init.d/mysql.server
     sudo echo "安装成功!启动mysql服务..."
     sudo systemctl enable mysql > /dev/null 2>&1
     ;;
  5.7*)
     ;;
esac

:<<!  
 备注,脚本中禁止使用 sudo bin/mysqld --initialize -insecure --user=mysql > /dev/null 2>&1 初始化,因为会出现以下错误
Ignoring -days; not generating a certificate
Can't load /root/.rnd into RNG
139748931281984:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:88:Filename=/root/.rnd
并且会丢失一些原始的数据库数据,比如会丢失sys库
!

5、到DATA_DIR目录下的error.log找到生成的临时目录:
在这里插入图片描述
6、请登陆:mysql -uroot -p
7、重置密码:ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘123456’;
备注:登陆MYSQL时可能会出现错误:mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

错误2:ls -l /bin/sh
mysql.sh: 72: mysql.sh: source: not found
原因说明:
1、Ubuntu系统中,默认使用的shell是/bin/dash,它不支持source命令;
2、由于大多数shell都是使用的/bin/bash,因此简单粗暴,直接改变shell运行环境
解决·

$ ls -l `which sh`
lrwxrwxrwx 1 root root 4 Oct 28 03:31 /bin/sh -> dash
sudo dpkg-reconfigure dash #选择No
$ ls -l `which sh`
lrwxrwxrwx 1 root root 4 Feb 19 17:06 /bin/sh -> bash

请参考:https://blog.csdn.net/zhizhengguan/article/details/86686621

你可能感兴趣的:(#,MySQL)