CentOS7.9 安装 mysql-8.0.36 踩坑小记
![CentOS7.9安装mysql-8.0.36踩坑小记](https://static001.geekbang.org/infoq/f5/f5120e34ef59645788005e7624178dd8.jpeg)
前言:
最近想在一台测试服务器上,安装下最新的 MySQL 8.0 版本数据库,想着挺简单的一件事,之前也手搓过 8.0 安装,这不手到擒来,没想到马失前蹄,遇到了一个小坑,耗费了不少时间,简单写篇文档记录下吧。
1.排错记录
执行 ./mysqld --initialize 初始化命令后,提示报错,如下图所示
![](https://static001.geekbang.org/infoq/b0/b0274fbdc23bb76ea798490977c70c52.png)
看报错应该是一些 so 文件版本太低,想着一步步解决呗,首先检查下 libstdc++.so.6 库版本,果然少了 GLIBCXX_3.4.20 等几项。
![](https://static001.geekbang.org/infoq/36/369f993c4c2575747628d19dc1e2716f.png)
这里笔者偷了个懒,去公司其他服务器上拷贝来了个 6.0.25 版本的 libstdc++.so 替换了下,果然可用,再次执行下初始化,报错少了很多。
![](https://static001.geekbang.org/infoq/78/78427a535c582e7c0766a98d907238f7.png)
<br />那就继续按此办法来呗,继续替换其他几个 so 文件,弄着弄着发现不对劲,连基础命令 cd ls 执行都报错找不到 libc.so.6 库文件了,网上查了下原来是 glibc 库文件损坏了,好家伙 碰到大动脉了,幸亏我还 ssh 连接着,一通操作终于能正常用了。
原谅我后知后觉,至此我才明白,原来是 glibc 和 gcc 版本太低的问题,尝试下更新 glibc ,发现已经是最新版了,难道是 yum 源太老?那么只能换新的 yum 源或者用源码编译安装了。
![](https://static001.geekbang.org/infoq/46/46d3dc15339449e3c623ebc43f733836.png)
之前也在 CentOS 7.9 服务器上安装过 MySQL 啊,怎么没遇到此类问题,回过头看安装包,我才发现下载的是 glibc2.28 版本的安装包,需要 glibc 版本在 2.28 及以上。
![](https://static001.geekbang.org/infoq/37/3749eb07cf81c03551a4a09edd7c05c2.png)
再次去 MySQL 官网查看,发现还真有不同 glibc 版本的安装包,之前还真没注意过,低版本的 linux 发行版,如果不想升级 glibc 的话,使用低版本的安装包即可。
![](https://static001.geekbang.org/infoq/52/526cd840572d04c72422689aaa085d35.png)
![](https://static001.geekbang.org/infoq/73/73edc378857bbb7a5e641769d7103468.png)
![](https://static001.geekbang.org/infoq/ac/ace736e029c19c9c2e9e53a3267d2df5.png)
后来查询资料得知,CentOS 7.9 系统默认的 glibc 版本是 2.17 ,glibc 是 Linux 系统中不可或缺的一部分,几乎所有的 Linux 程序都直接或间接依赖于它,是 Linux 系统中的一个非常重要的库,为系统提供了许多基本的函数库,扮演着至关重要的角色,所以生产服务器还是谨慎进行升级。建议 CentOS 7.9 安装 MySQL ,使用 glibc 为 2.12 或 2.17 版本的安装包。
2.全面认识 MySQL 安装包
经过这次排错过程,也让我对 MySQL 安装包有了更多的认识,以 Linux 系统 MySQL 8.0.36 版本为例,我们看下官网上的安装包:
![](https://static001.geekbang.org/infoq/05/05866078a90ab5d4ca270aba299fe029.png)
根据处理器架构区分,MySQL 提供 x86_32-bit 、x86_64-bit 及 ARM_64-bit 三种,一般我们的服务器都是 x86 64-bit 架构,可以通过 uname -m 或者 arch 命令来查看。<br />
![](https://static001.geekbang.org/infoq/97/9785813ebe33ed15c2c4cf5d152dbd30.png)
<br />x86_32-bit 架构的安装包带有 i686 标识,x86_64-bit 架构的安装包带有 x86_64 标识,ARM_64-bit 架构的安装包带有 aarch64 标识。
![](https://static001.geekbang.org/infoq/99/99f308085d3e5ce07b55cf96f4aa899a.png)
根据 glibc 版本不同,官方提供 glibc2.28 、glibc2.12、glibc2.17 三种,使用 ldd --version 命名可查看本机 glibc 的版本,然后选择匹配的安装包即可。
对于特定的 glibc 版本及处理器架构,MySQL 官方又提供了三种不同的安装包。mysql-8.0.36-linux-glibc2.28-x86_64.tar.xz 这个安装包通常包含了 MySQL 服务器的二进制文件,它是用于生产环境的 MySQL 数据库系统的主要组件,包括 MySQL 数据库引擎、管理工具和客户端库等,允许用户安装并运行 MySQL 数据库服务器,一般二进制安装选择此安装包。mysql-test-8.0.36-linux-glibc2.28-x86_64.tar.xz 这个安装包包含了 MySQL 的测试套件,它主要用于开发者或者测试人员来对 MySQL 数据库进行测试,包括单元测试、功能测试、性能测试等。mysql-8.0.36-linux-glibc2.28-x86_64.tar 包则是一个集成包,用于提供 MySQL 数据库服务器、测试套件和 MySQL Router 的二进制文件。
![](https://static001.geekbang.org/infoq/ce/cedb6f7ed1d9637499ec99e3206037b4.png)
总结:
经过这次小插曲,也算重新认识了 MySQL 的安装包,其实从 MySQL 8.0.33 版本开始,官方才提供基于 glibc2.28 的安装包,难怪之前没遇到过,之前都是用的 glibc2.12 版本的安装包。总而言之,安装 MySQL 时,要根据自己的操作系统及 glibc 版本来选择匹配的安装包,这样才能避免初始化失败。
版权声明: 本文为 InfoQ 作者【Simon】的原创文章。
原文链接:【http://xie.infoq.cn/article/fcd2fe05751211a7bde33261c】。文章转载请联系作者。
评论