一、下载mysql压缩包,

下载网址 :https://downloads.mysql.com/archives/community/

当前最新版本为8.0.22 , 我们选择Linux - Generic (glibc 2.17) (x86, 64-bit), Compressed TAR Archive Minimal Install版本, Minimal Install因为不包含调试和测试工具,所以安装包比较小,tar.xz压缩文件只有49M,解压后才300多M;

Minimal版本crash产生的core file文件,无法进行 gdb 调试,需要使用对应完整版调试;

下载地址:

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.22-linux-glibc2.17-x86_64-minimal.tar.xz

建议使用迅雷下载,原地址下载虽然只有49M,但是要下载很长时间,下载完压缩包后,解压mysql到本地目录:

xz -d mysql-8.0.22-linux-glibc2.17-x86_64-minimal.tar.xz

得到mysql-8.0.22-linux-glibc2.17-x86_64-minimal.tar文件有344M;继续解压tar文件:

tar xvf mysql-8.0.22-linux-glibc2.17-x86_64-minimal.tar

解压到目录/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal

二、安装mysql

1. 创建log目录,保存日志

mkdir /export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/log

2. 创建binlog目录,用于保存binlog

mkdir /export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/binlog

3. 创建mysql.cnf文件

vi /export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/mysql.cnf

[mysqld]# 设置3306端口
port=3306# 设置mysql的安装目录
#basedir=G:/Server/mysql-8.0.21-winx64# 设置mysql数据库的数据的存放目录
#datadir=G:/Server/mysql-8.0.21-winx64/data# 允许最大连接数
max_connections=2000# 允许连接失败的次数。
max_connect_errors=10# 服务端使用的字符集默认为UTF8MB4
character-set-server=UTF8MB4# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB# 默认使用“mysql_native_password”插件认证
#mysql_native_passworddefault_authentication_plugin=mysql_native_password# 时区使用东8区
default-time-zone='+08:00'#sql_mode="STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"[mysql]# 设置mysql客户端默认字符集
default-character-set=UTF8MB4[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=UTF8MB4

4. 执行初始化命令

/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/bin/mysqld --defaults-file=/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/mysql.cnf --initialize-insecure --basedir=/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/ --datadir=/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/data/ --log-error=/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/log/mysql.log --pid-file=/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/mysql.pid --port=3306 --log-bin=/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/binlog/binlog --console

注意参数顺序:-defaults-file 参数必须放到最前面,否则会报以下错误

[MY-000067] [Server] unknown variable 'defaults-file=/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/mysql.cnf'

查看日志,如果日志输出以下内容,代表初始化成功:

2021-02-03T13:29:46.437580Z 0 [System] [MY-013169] [Server] /export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/bin/mysqld (mysqld 8.0.22) initializing of server in progress as process 17220
2021-02-03T13:29:46.448546Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2021-02-03T13:29:47.469793Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2021-02-03T13:29:50.168031Z 6 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.

此命令会在data目录下创建mysql的初始化库,执行此命令后,会生成初始化数据文件:

1)在binlog目录下生成以下文件:

[work@iZj5e7rbsrt1crbhej9gluZ binlog]$ ll
total 12
-rw-r----- 1 work work 179 Feb  3 21:27 binlog.000001
-rw-r----- 1 work work 179 Feb  3 21:29 binlog.000002
-rw-r----- 1 work work 146 Feb  3 21:29 binlog.index

2)在data目录下生成以下文件:

[work@iZj5e7rbsrt1crbhej9gluZ data]$ ll
total 164288
-rw-r----- 1 work work       56 Feb  3 21:29 auto.cnf
-rw------- 1 work work     1680 Feb  3 21:29 ca-key.pem
-rw-r--r-- 1 work work     1112 Feb  3 21:29 ca.pem
-rw-r--r-- 1 work work     1112 Feb  3 21:29 client-cert.pem
-rw------- 1 work work     1676 Feb  3 21:29 client-key.pem
-rw-r----- 1 work work   196608 Feb  3 21:29 #ib_16384_0.dblwr
-rw-r----- 1 work work  8585216 Feb  3 21:29 #ib_16384_1.dblwr
-rw-r----- 1 work work     5502 Feb  3 21:29 ib_buffer_pool
-rw-r----- 1 work work 12582912 Feb  3 21:29 ibdata1
-rw-r----- 1 work work 50331648 Feb  3 21:29 ib_logfile0
-rw-r----- 1 work work 50331648 Feb  3 21:29 ib_logfile1
drwxr-x--- 2 work work     4096 Feb  3 21:29 #innodb_temp
drwxr-x--- 2 work work     4096 Feb  3 21:29 mysql
-rw-r----- 1 work work 25165824 Feb  3 21:29 mysql.ibd
drwxr-x--- 2 work work     4096 Feb  3 21:29 performance_schema
-rw------- 1 work work     1680 Feb  3 21:29 private_key.pem
-rw-r--r-- 1 work work      452 Feb  3 21:29 public_key.pem
-rw-r--r-- 1 work work     1112 Feb  3 21:29 server-cert.pem
-rw------- 1 work work     1676 Feb  3 21:29 server-key.pem
drwxr-x--- 2 work work     4096 Feb  3 21:29 sys
-rw-r----- 1 work work 10485760 Feb  3 21:29 undo_001
-rw-r----- 1 work work 10485760 Feb  3 21:29 undo_002

5. 启动mysql

方式一、使用mysqld启动mysql

/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/bin/mysqld --defaults-file=/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/mysql.cnf --basedir=/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/  --datadir=/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/data/ --log-error=/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/log/mysql.log --pid-file=/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/mysql.pid  --port=3306   --log-bin=/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/binlog/binlog   --socket=/tmp/mysql.sock

方式二、使用mysqld_safe启动mysql:

/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/bin/mysqld_safe --defaults-file=/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/mysql.cnf --basedir=/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/  --datadir=/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/data/ --log-error=/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/log/mysql.log --pid-file=/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/mysql.pid --log-bin=/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/binlog/binlog --socket=/tmp/mysql.sock

mysqld_safe 监控mysqld进程的状态,当mysqld进程crash 之后,mysqld_safe会重启mysqld 进程。所以推荐使用此方式启动mysql;

启动命令是绿化关键所在,和文件路径相关的很多配置可以放到配置文件中,但是写到启动命令中的原因,就是为了绿化做主备;

6. 创建密码

初始化后的mysql是没有密码的;

执行以下命令登录mysql

   /export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/bin/mysql  -u root

执行以下sql,先设置账号能够访问的服务器和密码;

use mysql
update user set Host="%" where user="root";
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '2020';
FLUSH PRIVILEGES;

初始化好密码之后,就变成绿色版了,大家如果想要将mysql迁移到到任意服务器任意目录下启动mysql, 只要更改命令行中/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/ 的路径即可;

7. 绿化关键 启停脚本 controller.sh

#!/bin/shAPP_HOME=$(cd $(cd `dirname $0`; pwd)/..; pwd)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$APP_HOME/lib
start(){echo ""echo ""pr=`ps ax | grep mysqld | grep $APP_HOME | egrep -v "grep" `echo ""echo "-------------current process status------------------------"echo $prif [ -z "$pr" ];thenecho "-------------starting process------------------------"nohup $APP_HOME/bin/mysqld_safe --defaults-file=$APP_HOME/mysql.cnf --basedir=$APP_HOME/  --datadir=$APP_HOME/data/ --log-error=$APP_HOME/log/mysql.log --pid-file=$APP_HOME/mysql.pid --log-bin=$APP_HOME/binlog/binlog --socket=/tmp/mysql.sock &sleep 3spr=`ps ax | grep mysqld | grep $APP_HOME | egrep -v "grep" `if [ -z "$pr" ];thenecho -e "[ \033[31m  \033[5m process start fail \033[0m ]"elseecho -e "[ \033[32m  \033[5m process start success \033[0m ]"echo "process info:"echo $prfielseecho -e "[ \033[31m \033[5m process alread started \033[0m ]"fi
}stop(){echo ""echo ""# 获取进程信息pr=`ps ax | grep mysqld | grep $APP_HOME | egrep -v "grep"`echo "-------------current process status------------------------"echo $pr# 停止进程if [ -z "$pr" ];thenecho -e "[ \033[31m \033[5m process is not running \033[0m ]"elseecho ""echo "-------------stop process----------------------------------"pr_num=`ps ax | grep mysqld | grep $APP_HOME | egrep -v "grep" |  egrep -v "mysqld_safe" | awk '{print $1}'`echo "process is running PID:$pr_num"echo -e "killing process $pr_num"       kill  $pr_numsleep 2swhile true;dopr=`ps ax | grep mysqld | grep $APP_HOME | egrep -v "grep" `if [ -z "$pr" ];thenecho -e "[ \033[32m \033[5m process stop success \033[0m ]"breakelseecho -e "[ \033[31m \033[5m process is running,waiting to close \033[0m ]"kill  $pr_numsleep 2sfidonefi
}status(){echo ""echo ""echo "-------------current process status------------------------"pr=`ps ax | grep mysqld | grep $APP_HOME | egrep -v "grep" `if [ -z "$pr" ];thenecho -e "[ \033[32m \033[5m process is not running \033[0m ]"elsepr_num=`ps ax | grep mysqld | grep $APP_HOME | egrep -v "grep" |  egrep -v "mysqld_safe" |awk '{print $1}'`echo -e "[ \033[32m \033[5m process is running PID:$pr_num \033[0m ]"echo "process info:"echo $prfi
}case "$1" instatus)status;;start)start;;stop) stop;;restart)stop sleep 2 start;;      *)echo -e "\033[43m \033[31m [ERROR] Please enter the parameters,it can be \"start\" or \"stop\" or \"restart\" or \"status\" \033[0m"echo example:echo "sh controller.sh status";;esac

8. 打成压缩包

将mysql压缩成可以释放到任意目录的压缩包:

# 先用以下命令将mysql目录打包为tar包,注意是打包,不是压缩
tar cvf mysql-8.0.22-linux-glibc2.17-x86_64-minimal.tar mysql-8.0.22-linux-glibc2.17-x86_64-minimal/
# 再用以下命令将mysql目录压缩为tar.xz文件
xz -z mysql-8.0.22-linux-glibc2.17-x86_64-minimal.tar

得到 mysql-8.0.22-linux-glibc2.17-x86_64-minimal.tar.xz 压缩包,只有55M;然后就可以把以上压缩包释放到任意目录去运行mysql了。

遇到的问题

问题一、启动过程中提示缺少libaio.so.1,需要安装libaio, 错误提示信息如下:

/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

解决方式:

yum install libaio

然后将/usr/lib64/libaio.so.1文件拷贝到/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/lib目录下

执行mysql命令时,先执行:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/export/mysql-8.0.22-linux-glibc2.17-x86_64-minimal/lib

问题二、配置文件读取问题

使用mysql命令导入sql脚本或执行sql命令时, 如果本机已经安装了mysql,存在默认的配置文件,会导致mysql命令读取默认配置文件, mysql使用配置文件的加载顺序为

  1. /etc/my.cnf
  2. /etc/mysql/my.cnf
  3. basedir/my.cnf           # mysql的basedir参数指定的目录
  4. datadir/my.cnf            # mysql的datadir参数指定的目录
  5. --defaults-extra-file    # 启动时命令行指定的参数配置文件--defaults-extra-file
  6. ~/.my.cnf      # 当前用户目录 下的隐藏文件

如果5个配置文件都存在,还使用--defaults-extra-file参数指定配置文件,如果有 "参数"在这6个配置文件中设置了多次,那么以最后一个配置文件出现此参数的配置为准,所以会使用~/my.cnf中设置的值。

为了防止去读取系统默认的配置文件,执行mysqld、mysql、mysqld_safe命令时,要通过--defaults-file参数指定配置文件,这样就不会再去读取默认的配置文件了 

优化mysql内存申请:

将默认的替换为jemalloc

wget https://github.com/jemalloc/jemalloc/releases/download/5.2.1/jemalloc-5.2.1.tar.bz2

安装bzip2

yum -y install bzip2

tar   -jxvf  jemalloc-5.2.1.tar.bz2

执行编译三连命令:

./configure

make

make install

将编译后的

export LD_PRELOAD=${libdir}/libjemalloc.so.2

环境变量LD_PRELOAD,定义在程序运行前优先加载的动态链接库,优先载入指定动态链接库中的相同函数,覆盖默认的相同函数;

制作mysql8.0.22 绿色版相关推荐

  1. 最新mysql8.0.22忘记密码解决大法

    windows10 mysql8.0.22忘记密码解决大法,密码搞不定,不管什么原因,不管什么提示,就按下面的方法搞一下,省时高效. 如有解决不了的密码问题,欢迎留言讨论,共同进步. mysql忘记密 ...

  2. centos8安装mysql8_CentOS 8安装MySQL8.0.22图文教程

    安装环境 系统版本:CentOS-8.2.2004(安装centos系统本章节不细节描述) mysql版本:MySQL8.0.22 一.Mysql下载 1.下载 MySQL 所需要的安装包,下载地址: ...

  3. MySQL8.0.22安装及配置(超详细)

    MySQL8.0.22安装及配置(超详细) 大家好,今天我们来学习一下 MySQL8.0.22安装及配置,好好看,好好学,超详细的 第一步 进入MySQL官网下载,如下图所示: 第二步 进入下载完成后 ...

  4. 微信android系统升级,安卓微信7.0.22正式版更新:新增微信豆等八大更新!

    安卓微信7.0.22正式版更新:新增微信豆等八大更新! 2020-12-26 14:46:57 5点赞 1收藏 2评论 创作立场声明:本文由我原创,转载请标注来源. "十二月了,应该到了今年 ...

  5. 屏幕尺子(电脑尺子) 1.0 免费绿色版

    软件名称: 屏幕尺子(电脑尺子) 1.0 免费绿色版 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win7 / Vista / Win2003 / WinXP / Win2008 软件大小 ...

  6. 世界之窗(TheWorld)浏览器 3.6.1.0 简体中文绿色版

    软件名称: 世界之窗(TheWorld)浏览器 3.6.1.0 简体中文绿色版 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win7 / Vista / Win2003 / WinXP 软 ...

  7. Artstudio Pro for Mac(绘画和照片编辑软件) 2.0.22特别版

    内置了丰富的绘图工具和笔刷效果,对64位处理器进行了优化,可以满足不同类型用户对图片的处理需要,Artstudio Pro For Mac是为苹果电脑用户打造的一款实用图像编辑和绘图软件,以最流行的格 ...

  8. 1. mysql8.0.22安装及其简单使用

    mysql8.0.22 1. 数据库的相关概念 2. 数据库存储数据的特点 3. MySQL产品的安装 一.MySQL服务的启动和停止 二.MySQL服务的登录和退出 三.MySQL的常见命令和语法规 ...

  9. Process Hacker(进程管理器) v3.0.2581绿色版便携版

    点击下载来源:Process Hacker(进程管理器) v3.0.2581绿色版便携版 Process Hacker是一款免费开源的统进程管理和内存编辑器,它不仅能够帮助你查看管理进程,同时也能进行 ...

最新文章

  1. CTFshow 信息收集 web20
  2. django 1.3下关于静态文件staticfiles的设置
  3. 前端学习(2346):使用脚手架工具
  4. 【2007-3】【分硬币】
  5. php-ews发送邮件,使用php-ews在特定日期之后收到电子邮件(Exchange Web服务)
  6. SAP License:你是怎么理解ERP的?
  7. 【UWP通用应用开发】控件、应用栏
  8. ajax 的post方法用例(带循环)
  9. mysql-connector-java-5.1.22下载及安装
  10. 电子学会图形化三级编程题解析含答案:冬天下雪了
  11. mysql的round_MySQL的ROUND函数
  12. python爬虫作业帮_2020高校邦《网络数据采集与Python爬虫【带实验】》课后作业参考答案2020知到《PPT创意动画》单选题答案...
  13. 微信Apk扫描无法下载,显示空白页
  14. matlab 关于interpreter的使用
  15. Android 9.0蓝牙音乐上一首、下一首、暂停和播放
  16. macOS 安装 python
  17. 在使用反向代理访问的服务器上配置远程jupyterNotebook
  18. 英文文献阅读时,如何做笔记?
  19. 非递归遍历二叉树(后序遍历)
  20. 业务数据相同,用友U8与金蝶K3计算的实际成本相同吗

热门文章

  1. 免签支付口令红包流程
  2. 安卓盘点机PDA的WIFI连接
  3. matlab 职坐标,Axure入门与基础常用函数解析整理
  4. summernote富文本编辑器
  5. 正交矩阵,(标准)正交基,正交投影,正交分解定理,最佳逼近定理,格拉姆-施密特方法求正交基(手算+MATLAB),QR分解(手算+MATLAB计算、分析)
  6. rsync远程同步(增量备份)
  7. 睡眠是锁定计算机怎么设置密码,电脑睡眠密码怎么设置
  8. DOS命令:subst
  9. python双色球模拟投注及开奖,可复式投注
  10. 计算机二级ms office真题百度云,历年计算机网络,计算机二级Word,Excel真题及答案...