[数据库][MySQL]MySQL8.0数据库安装参考手册Linux 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 - GenericSelect 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、数据引擎要求为InnoDB2、MySQL8字符集要求为utf8mb4早期MySQL版本可设置为utf83、要求不区分表/字段大小写lower_case_table_names14、MySQL8系列时区默认为美国时区中国用户若要正常使用需修改mysql配置文件为default-time-zone‘8:00’5、MySQL5.7或者以上版本需要设置数据库日志时间匹配系统时区log_timestampssystem6、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 stoplinux环境下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及所有库的数据则参考如下操作。注意慎重自行