文章目录
0、MySQL通用二进制安装包下载
https://dev.mysql.com/downloads/mysql/
然后将二进制包拖入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.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.youkuaiyun.com/zhizhengguan/article/details/86686621