制作mysql8.0.22 绿色版
一、下载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使用配置文件的加载顺序为
- /etc/my.cnf
- /etc/mysql/my.cnf
- basedir/my.cnf # mysql的basedir参数指定的目录
- datadir/my.cnf # mysql的datadir参数指定的目录
- --defaults-extra-file # 启动时命令行指定的参数配置文件--defaults-extra-file
- ~/.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 绿色版相关推荐
- 最新mysql8.0.22忘记密码解决大法
windows10 mysql8.0.22忘记密码解决大法,密码搞不定,不管什么原因,不管什么提示,就按下面的方法搞一下,省时高效. 如有解决不了的密码问题,欢迎留言讨论,共同进步. mysql忘记密 ...
- centos8安装mysql8_CentOS 8安装MySQL8.0.22图文教程
安装环境 系统版本:CentOS-8.2.2004(安装centos系统本章节不细节描述) mysql版本:MySQL8.0.22 一.Mysql下载 1.下载 MySQL 所需要的安装包,下载地址: ...
- MySQL8.0.22安装及配置(超详细)
MySQL8.0.22安装及配置(超详细) 大家好,今天我们来学习一下 MySQL8.0.22安装及配置,好好看,好好学,超详细的 第一步 进入MySQL官网下载,如下图所示: 第二步 进入下载完成后 ...
- 微信android系统升级,安卓微信7.0.22正式版更新:新增微信豆等八大更新!
安卓微信7.0.22正式版更新:新增微信豆等八大更新! 2020-12-26 14:46:57 5点赞 1收藏 2评论 创作立场声明:本文由我原创,转载请标注来源. "十二月了,应该到了今年 ...
- 屏幕尺子(电脑尺子) 1.0 免费绿色版
软件名称: 屏幕尺子(电脑尺子) 1.0 免费绿色版 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win7 / Vista / Win2003 / WinXP / Win2008 软件大小 ...
- 世界之窗(TheWorld)浏览器 3.6.1.0 简体中文绿色版
软件名称: 世界之窗(TheWorld)浏览器 3.6.1.0 简体中文绿色版 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win7 / Vista / Win2003 / WinXP 软 ...
- Artstudio Pro for Mac(绘画和照片编辑软件) 2.0.22特别版
内置了丰富的绘图工具和笔刷效果,对64位处理器进行了优化,可以满足不同类型用户对图片的处理需要,Artstudio Pro For Mac是为苹果电脑用户打造的一款实用图像编辑和绘图软件,以最流行的格 ...
- 1. mysql8.0.22安装及其简单使用
mysql8.0.22 1. 数据库的相关概念 2. 数据库存储数据的特点 3. MySQL产品的安装 一.MySQL服务的启动和停止 二.MySQL服务的登录和退出 三.MySQL的常见命令和语法规 ...
- Process Hacker(进程管理器) v3.0.2581绿色版便携版
点击下载来源:Process Hacker(进程管理器) v3.0.2581绿色版便携版 Process Hacker是一款免费开源的统进程管理和内存编辑器,它不仅能够帮助你查看管理进程,同时也能进行 ...
最新文章
- CTFshow 信息收集 web20
- django 1.3下关于静态文件staticfiles的设置
- 前端学习(2346):使用脚手架工具
- 【2007-3】【分硬币】
- php-ews发送邮件,使用php-ews在特定日期之后收到电子邮件(Exchange Web服务)
- SAP License:你是怎么理解ERP的?
- 【UWP通用应用开发】控件、应用栏
- ajax 的post方法用例(带循环)
- mysql-connector-java-5.1.22下载及安装
- 电子学会图形化三级编程题解析含答案:冬天下雪了
- mysql的round_MySQL的ROUND函数
- python爬虫作业帮_2020高校邦《网络数据采集与Python爬虫【带实验】》课后作业参考答案2020知到《PPT创意动画》单选题答案...
- 微信Apk扫描无法下载,显示空白页
- matlab 关于interpreter的使用
- Android 9.0蓝牙音乐上一首、下一首、暂停和播放
- macOS 安装 python
- 在使用反向代理访问的服务器上配置远程jupyterNotebook
- 英文文献阅读时,如何做笔记?
- 非递归遍历二叉树(后序遍历)
- 业务数据相同,用友U8与金蝶K3计算的实际成本相同吗
热门文章
- 免签支付口令红包流程
- 安卓盘点机PDA的WIFI连接
- matlab 职坐标,Axure入门与基础常用函数解析整理
- summernote富文本编辑器
- 正交矩阵,(标准)正交基,正交投影,正交分解定理,最佳逼近定理,格拉姆-施密特方法求正交基(手算+MATLAB),QR分解(手算+MATLAB计算、分析)
- rsync远程同步(增量备份)
- 睡眠是锁定计算机怎么设置密码,电脑睡眠密码怎么设置
- DOS命令:subst
- python双色球模拟投注及开奖,可复式投注
- 计算机二级ms office真题百度云,历年计算机网络,计算机二级Word,Excel真题及答案...