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 root4、执行脚本
$ 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.csdn.net/zhizhengguan/article/details/86686621