MySQL8.0数据库安装参考手册Linux
北京致远互联软件股份有限公司
2024年11月更新
组件合规性说明
MySQL数据库提供了开源和商业双许可策略:
注意需要客户选择符合许可的数据库产品线!
前言
本手册提供MySQL8.0系列二进制包安装详细步骤,二进制方案兼容性广,不挑系统,最易于维护,是Linux下最推荐的安装方案。
本示例选择安装MySQL Community Server社区版。
安装前Linux参数优化
预装部署所需的命令:
修改Linux最大进程数最大文件打开数:
通过 vim /etc/security/limits.conf 命令编辑此文件添加以下内容
以上配置完成,reboot命令重启操作系统,重启后执行 ulimit -a 命令检查open files是否都变成65535
以下为临时生效方法:
部署前先关闭selinux:
视频示例
如对手册不理解,可参考在线视频进行学习【MySQL二进制标准化安装 (opens new window)】
安装包准备
下载MySQL二进制包
下载地址:https://dev.mysql.com/downloads/mysql/ (opens new window)
Select Version:选择8.0.x版本
Select Operating System:无论什么Linux系统都选择Linux - Generic
Select OS Version:本演示系统是x86/64位/GLIBC 2.39,于是下载最接近的glibc2.28 x86 64-bit版本
通过uname -a命令来判断当前操作系统芯片和位数;通过ldd --version命令来看glibc版本,下载的安装包glibc尽量<=操作系统的glibc
本案例下载的包名为:mysql-8.0.40-linux-glibc2.28-x86_64.tar.xz

上传安装包到Linux
用ssh ftp工具将二进制包上传到Linux中,本示例是将二进制包上传到/data目录:

安装步骤
整个二进制包安装过程可以完全参考MySQL官方文档:https://dev.mysql.com/doc/refman/8.0/en/binary-installation.html (opens new window)
安装libaio
根据MySQL官方手册要求,需要先安装libaio包,不同Linux发行版安装方法不同:
特别提醒:Ubuntu24LTS与22版本的libaio包发生了很大变化,需要参考网上的文档 (opens new window)做调整,否则执行后续MySQL安装时会报错:
卸载MariaDB
确保当前系统下没有MySQL,也没有MariaDB,如果有会影响MySQL安装。
创建mysql用户组和目录
以下命令一句一句执行即可,唯一不同的是tar.xz二进制包和数据目录可能跟项目上有差异,项目上根据自身情况调整:

创建my.cnf文件
在/etc下创建my.cnf文件,用于管理MySQL的配置:
将以下内容按照项目真实情况做调整后拷贝到/etc/my.cnf里并保存。其中标记有*星号的部分都需要项目上根据实际情况调整:
关于/etc/my.cnf配置,有几个关键信息:
1、数据引擎要求为InnoDB
2、MySQL8字符集要求为utf8mb4,早期MySQL版本可设置为utf8
3、要求不区分表/字段大小写lower_case_table_names=1
4、MySQL8系列,时区默认为美国时区,中国用户若要正常使用,需修改mysql配置文件为default-time-zone=‘+8:00’
5、MySQL5.7或者以上版本,需要设置数据库日志时间匹配系统时区log_timestamps=system
6、innodb_buffer_pool_size参数是非常关键的性能指标,生产库建议按照服务器内存的50%-80%配置
7、本示例开通的是默认3306端口,实际生产环境不要用默认端口,建议改成一个不常用端口,以降低被攻击的概率
初始化MySQL
安装完成后,找到/etc/my.cnf中的log-error参数值,这个参数路径存放了日志,根据这个日志能找到mysql的初始化密码
拷贝类似如下图所示的这串字符串,这个就是初始化MySQL后生成的密码,做好备份,我们需要拿着它登录MySQL:

启动MySQL
接下来,将 MySQL 的启动脚本复制到系统的初始化脚本目录,以便可以使用标准的服务管理命令来启动、停止和管理 MySQL 服务:

以上完成后,执行启动MySQL服务器的命令:
如果是Ubuntu系统,执行service mysqld start,可能遇到Failed to start mysqld.service: Unit mysqld.service not found的错误,此问题在“Ubuntu系统启动脚本特殊处理”章节中处理。
Ubuntu系统启动脚本特殊处理
如果是Ubuntu系统,执行service mysqld start,可能遇到Failed to start mysqld.service: Unit mysqld.service not found的错误,这通常是因为系统使用 systemd 而不是传统的 init.d 脚本来管理服务。在 systemd 系统中,需要创建一个 .service 文件来管理 MySQL 服务。
针对Ubuntu系统,解决方案如下:
以上完成后,按如下方式注册启动mysql:

登录MySQL并重设密码
执行脚本登录到本地MySQL服务器中:
如果密码含有特殊字符,Bash解释器可能会误解这些特殊字符并且拒绝执行,如下图所示,此时我们只需要将密码通过单引号包裹住即可绕过:

登录成功后,修改root密码,并新建帐号用于后续OA的连接管理:

在MySQL数据库中,初始化一个空库(如SEEYONV5),用于后续OA使用:
以上完成后,可以通过exit命令退出MySQL,尝试使用自定义的密码登录MySQL,如果成功则说明一切OK。
开启防火墙
数据库服务器涉及信息安全,建议尽量只暴露数据库的端口
客户端连接
如果开启了远程访问,并且放开了防火墙控制,通过数据库连接工具就能远程连接到MySQL服务上:


日常运维
管理主要文件
通过二进制安装的MySQL目录都由安装人员控制,做升级调整都很方便,如果按照本手册操作,我们只需要关注如下目录即可:
创建空库
以管理员身份进入MySQL执行创建库操作,或通过数据库可视化工具创建,MySQL8所用字符集设置为utf8mb4
备份数据库
如果是协同OA使用,我们可以通过S1工具设置自动备份。
也可以到MySQL服务器bin目录下执行mysqldump导出
导入数据库
如果是S1工具备份,可以把备份包拷贝到测试环境,再使用测试环境的S1还原数据库,特别提醒:务必检查好S1的数据库连接配置,不要覆盖到生产库了。
如果是通过mysqldump导出的.sql脚本,或协同OA的完整all-in-one.sql文件,可以到MySQL服务器bin目录下执行导入。
导入之前,先检查字符集:通过show variables like '%character%'语句查询当前MySQL8的字符集,如果红框都是utf8mb4就OK

随后执行导入即可,导入也是按照utf8mb4写入:
迁移mysql数据目录
mysql数据目录由参数datadir指定,默认是在/var/lib/mysql 参数值可以通过 show variables like ‘datadir’; 查询得到 例:假设当前需要把datadir(/var/lib/mysql)迁移至/data/Seryon/mysql/data
迁移步骤:
请根据实际的启停命令操作: systemd管理的mysqld服务可以通过:systemctl stop mysqld 如果是使用的脚本模板,比如:/etc/inid.d/mysql.server stop 或者 /etc/inid.d/mysqld stop
linux环境下,mysql配置文件默认在/etc/my.cnf 或者 /etc/mysql/my.cnf;还有些环境可能是手动指定了配置文件,这种情况可以通过命令 ps -ef|grep mysqld 查看–defaults-file参数后跟的配置文件路径 找到配置文件中mysqld下datadir的参数,修改为/data/Seryon/mysql/data 如果在配置文件中没有找到datadir参数,而实际datadir又不在/var/lib/mysql,考虑可能是启动脚本里面有设置了 提示:修改前请先备份
建议通过rsync命令进行同步,例:rsync -av /var/lib/mysql/* /data/Seryon/mysql/data/* 注意新目录不要放到 /root 下,且拷贝时必须停止mysqld 拷贝完成后,可以将原datadir目录重命名(为了降低风险,禁止直接干掉原datadir,拷贝时也不要直接mv移动替换)
chown -R mysql:mysql /data/Seryon/mysql/data
按原来的方式启动mysqld,并查询datadir的值是否已经修改 运行一段时间之后,确认没有问题,再处理原datadir目录,建议可以压缩备份,不要直接删除
卸载mysql
如需卸载mysql及所有库的数据,则参考如下操作。注意慎重自行!!!

809

被折叠的 条评论
为什么被折叠?



