一、版本及下载

  ■ 版本介绍
    · 
Alpha版:开发版,公司内部使用
    · 完成开发后,用户体验版
    · 
RC版:生产环境发布之前的一个小版本或称候选版
    · GA版:正式发布版本(本次部署要用的)

  ■ MySQL 官网地址:https://www.mysql.com
    · 从官方网站下载安装包
    · 从官方网站下载源代码包
    · 从官方网站下载二进制包
    ·从发行版本光盘中获取安装包

  ■ MySQL 常见版本
    · MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。
    · MySQL Enterprise Edition
企业版本,需注册付费,可以试用 30 天。
    · MySQL Cluster
集群版,开源免费。可将几个 MySQL Server 封装成一个 Server
    ·MySQL Cluster CGE 高级集群版,需付费。
■ 官方文档:
MySQL :: Download MySQL Community Serverhttps://dev.mysql.com/downloads/mysql/
■ MySQL数据库存在多种版本,不同的版本在不同的平台上:MySQL :: Download MySQL Community Serverhttps://dev.mysql.com/downloads/mysql/

  ■也可以选择MySQL对应版本的,找到安装教程,如MySQL8.0为例:

https://dev.mysql.com/doc/refman/ 8.0/en/installing.html

  二、. yum仓库安装

   2.1添加yum源(RHEL)

    · 访问官方:MySQL
    · 查看官方教程:https://dev.mysql.com/doc/refman/8.0/en/linux-installation-yum-repo.htm
    · 选择downloads页面的:MySQL :: MySQL 社区下载

  ■ 选择:MySQL Yum Repository

  ■ 选择版本后下载yum源

  ■ 添加yum源

[root@server ~] # wget https://dev.mysql.com/get/mysql84-community-release-el9- 1.noarch.rpm
[root@server ~] # rpm -ivh mysql84-community-release-el9-1.noarch.rpm
[root@server ~] # yum list | grep mysql
  ■ 安装mysql-community-server
[root@server ~] # yum install mysql-community-server.x86_64 -y
[root@server ~] # systemctl start mysqld                        # 启动,注意有d
[root@server ~] # systemctl status mysqld
[root@server ~] # grep 'temporary password' /var/log/mysqld.log
2023 -07-09T02 :38:36.368700Z 6 [Note] [MY-010454] [Server] A temporary password is
generated for root@localhost: qQ6OmpD?8_.f                                  # 查看初始登录密码
[root@server ~] # mysql -u root -p                                                      # 以root身份登录
Enter password:                                                                                 # 赋值初始登录密码
mysql> alter user 'root' @ 'localhost' identified by 'Admin123!' ;          # 设置新密码
mysql> show variables like 'validate_password.%' ;                         # 查看密码设置默认的规则
+ -------------------------------------- ------- --------- ------ + ----------- +
| Variable_name                                                  | Value |
+ ------------------------------------------------------------ + ----------- +
| validate_password.check_user_name             | ON      |                  # ON时,账户及密码不能相同
| validate_password.dictionary_file                     |            |                # 规则文件保存路径
| validate_password.length                                  | 8         |                 # 密码长度
| validate_password.mixed_case_count              |   1        |                 # 至少要包含大/小写字母的个数
| validate_password.number_count                     | 1         |                 # 至少要包含数字的个数
| validate_password.policy                                   | MEDIUM |           # 密码的验证强度等级
| validate_password.special_char_count              | 1         |                # 密码中特殊字符个数
+ ------------------------------------------------------------- + ----------- +
7 rows in set (0.01 sec)
#  默认为中级密码验证规则,密码长度8为,内容至少包含:一个大写字母、一个小写字母、一位数字和一个特殊字符
#  若密码不好记忆可以调低密码验证等级,在设置简单的密码,但生产中不推荐
ysql> set global validate_password .policy = low;
mysql> set global validate_password .length = 6 ;
mysql> alter user 'root' @ 'localhost' identified by '123456' ;
mysql> exit
Bye
[root@server ~] # mysql -u root -p
Enter password:                                                     # 密码为123456
mysql> show databases;                                       # 注意s和分号结尾
mysql> show global variables like 'port' ;                         # 查看默认端口号
mysql> quit
Bye

  三、本地RPM包安装

   3.1使用迅雷下载集合包

    ■ 进入下载网站:MySQL :: 下载MySQL社区服务器(存档版本)
    ■ 如图:

3.2使用xftp将集合包上传到/目录

 3.2.1安装

[ root @server ~ ] # cd /
[ root @server / ] # tar -xvf mysql-8.0.45-1.el9.x86_64.rpm-bundle.tar            # 解压
[ root @server / ] # yum localinstall mysql-community-server-8.0.45-1.el9.x86_64.rpm \
mysql - community - client - 8.0.45 - 1. el9 .x86_64.rpm \                                     # 必须,客户端
mysql - community - common - 8.0.45 - 1. el9 .x86_64.rpm \                               # 必须,公共库
mysql - community - icu - data - files - 8.0.45 - 1. el9 .x86_64.rpm \                         # 必须,支持正则表达式的icu数据文件
mysql - community - client - plugins - 8.0.45 - 1. el9 .x86_64.rpm \                      # 必须,客户端共享插件
mysql - community - libs - 8.0.45 - 1. el9 .x86_64.rpm                                      # 不必须,开发库,开发跟MySql有关的C/C++ 项目时则需要
[ root @server / ] # cd ~
[ root @server ~ ] # systemctl start mysqld
[ root @server ~ ] # systemctl status mysqld                                               # 查看状态
[ root @server ~ ] # mysql -u root -p
Enter password :
ERROR 1045 ( 28000 ) : Access denied for user 'root' @'localhost' ( using password : NO ) # 密
码错误,需要重置密码
[ root @server ~ ] # grep password /var/log/mysqld.log                               # 查询初始密码
2026 - 02 - 09 T03: 55 : 47.305118 Z 6 [ Note ] [ MY - 010454 ] [ Server ] A temporary password is
generated for root @localhost : q & 2 PO .yJZ + Hp
# q&2PO.yJZ+Hp 为密码,需要复制
[ root @server ~ ] # mysql -u root -p
Enter password :                                                                                      # 粘贴之前的密码
mysql > show databases ;
ERROR 1820 ( HY000 ) : You must reset your password using ALTER USER statement before
executing this statement.                                                   # 提示需要修改默认密码
mysql > alter user 'root' @'localhost' identified by 'MyNewPass1!' ;           # 修改密码
Query OK, 0 rows affected ( 0.01 sec )
mysql> exit
Bye

  四、容器安装

   4.1 方法:

[ root @server ~ ] # yum remove docker \
                               docker - client \
                               docker - client - latest \
                               docker - common \
                               docker - latest \
                               docker - latest - logrotate \
                               docker - logrotate \
                               docker - engine \
                               podman \
                               runc - y                   # 先移除已安装的docker、podman等软件,未安装可不执行
    # yum-utils由CentOS官方开发的Linux包管理工具,它是yum软件包管理器的扩展,提供了一系列额外的命令和脚本,可以帮助Linux系统管理员更好地管理依赖关系、配置文件、软件包更新等方面的工作
[ root @server ~ ] # yum install yum-utils -y                        # 安装并升级
  # yum-config-manager包含在untils工具包中,用于对repo文件进行处理
[ root @server ~ ] # yum-config-manager --add-repo https://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo         # 添加源
  # 安装docker核心软件及客户端软件
[ root @server ~ ] # yum install docker-ce docker-ce-cli -y                    # 安装
[ root @server ~ ] # systemctl start docker
[ root @server ~ ] # systemctl status docker
[ root @server ~ ] # docker version
[ root @server ~ ] # docker run hello-world                                          # 测试
  # 注意:由于使用默认镜像仓库下载速度较慢,可以设置阿里的镜像加速器提高下载速度,在阿里开源登录->控制台-镜 像容器服务-镜像工具->镜像加速器->在linux命令行中设置如下:
[ root @node1 ~ ] # vim /etc/docker/daemon.json
  # 粘贴如下:
{
"registry-mirrors" : [ "https://1heqe202.mirror.aliyuncs.com" ]
}
[ root @node1 ~ ] # systemctl daemon-reload
[ root @node1 ~ ] # systemctl restart docker
[ root @node1 ~ ] # docker info                                                      # 查看信息最后有:
Registry Mirrors:
https://1heqe202 .mirror.aliyuncs.com /
  # 上述镜像加速可以选择不做
[ root @server ~ ] # docker run --name mysqltest1 -e MYSQL_ROOT_PASSWORD=123456 -d mysql                  # 创建mysqltest1实例,设置登录密码,启动mysql,若没有拉取镜像会自动拉取
[ root @server ~ ] # docker ps         # 查看是否运行,若没有运行实例可以重新建立数据库mysqltest2
[ root @server ~ ] # yum install bash-com*          # 安装bash扩展包,实现命令补齐,若已安装可跳过
[ root @server ~ ] # docker exec -it mysqltest1 /bin/bash         # 进入容器终端并且的保留为容器终端的输入形式.
bash - 4.4 # mysql -uroot -p                            # 登录
Enter password :                                            # 输入123456密码
Welcome to the MySQL monitor. Commands end with ; or \g .
Your MySQL connection id is 8
Server version: 8.0.30 MySQL Community Server - GPL
Copyright ( c ) 2000 , 2022 , Oracle and /or its affiliates.
Oracle is a registered trademark of Oracle Corporation and /or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help . Type '\c' to clear the current input statement.
mysql > show databases ;
mysql > exit
Bye
bash - 4.4                 # exit
exit
  注意
    1.不推荐将数据库部署在容器中,原因如下:
    2.安全问题:当容器崩溃,数据库为正常关闭可能损坏数据
    3.性能问题: mysql 是关系型数据库,对 I/O 要就较高,若数据库部署在容器中, I/O 会出现瓶颈
    4.网络问题、状态问题、资源隔离问题、等等
    5.建议:可以把数据丢失不敏感的业务(搜索等)进行容器化,也可以跑轻量级或分布式数据库

五、生产环境中使用通用二进制包安装

  5.1作用

    1.二进制包:源码包经过成功编译之后产生的包
    2.优点:由于二进制包在发布之前就已经完成了编译的工作,因此用户安装软件的速度较快
    3.注意:在生产环境中通用二进制包安装方法较为常用

   5.2软件包下载

    ■ 网址:MySQL :: 下载MySQL社区服务器(存档版本https://downloads.mysql.com/archives/community/
根据上图系统参数里的glibc版本和cpu架构选择
  ■ Compressed TAR Archive:生产环境首选包(最小完整版)
   
1.格式: .tar.xz 高压缩,体积小、传输快
    2.内容:仅运行 MySQL 必需文件(mysqld、客户端工具、库、配置模板、文档)
    3.剔除:调试程序、源码、完整测试套件、多余开发文件 
    4.适用:自建服务器、容器、生产业务、运维标准二进制部署


  ■ Compressed TAR Archive, Test Suite:仅测试人员使用,生产完全不用下载
    1.内容:MySQL 官方自动化压力 / 功能测试用例、测试脚本、单元测试工具
    2.不含完整数据库服务端程序,单独下载无法启动 MySQL 服务
    3.适用:内核开发、DBA 做全量兼容性压测,普通业务部署直接忽略


  ■ TAR:无压缩原始大包,不推荐
   
1.格式: .tar 无压缩,体积巨大,下载耗时、占用磁盘多
    2.内容:和第一个 xz 包内容完全一致,只是没有高压缩,包含完整 stripped 运行程序
    3.缺点:传输慢、备份占用空间大,无任何额外功能增益
    4.适用:内网离线环境无法解压 xz 格式的极端场景

  5.3 使用xftp将软件包上传到根目录

  5.4 解压缩

[root@server /] # tar -xvf mysql-8.0.45-linux-glibc2.28-x86_64.tar.xz
[root@server /] # cd mysql-8.0.45-linux-glibc2.28-x86_64
[root@server mysql-8.0.45-linux-glibc2.28-x86_64] # ls
bin docs include lib LICENSE man README share support-files


  5.5使用前的准备


# 移动到默认安装目录,也可自行修改

[root@server mysql-8.0.45-linux-glibc2.28-x86_64] cd /
[root@server /] # mv mysql-8.0.45-linux-glibc2.28-x86_64 /usr/local/mysql
[root@server /] # cd /usr/local/mysql
[root@server mysql] # groupadd mysql                   # 创建名为mysql的用户组

 
  # 创建mysql的系统用户,将其添加到mysql组中,并设置其不可登录,以限制该用户的登录权限
[root@server mysql] # useradd -r -g mysql -s /sbin/nologin mysql
[root@server mysql] # mkdir data                            # 创建用于存放MySQL数据文件目录
[root@server mysql] # chmod -R 750 data
 
  # 设置mysql目录的账户及工作组,生产环境中不要使用root
[root@server mysql] # chown -R mysql:mysql /usr/local/mysql

5.6 初始化软件

[root@server mysql] # bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --
datadir=/usr/local/mysql/data                                                     # 注意:需要复制密码
[root@server mysql] # bin/mysqld_safe --user=mysql &            # 使用后台方式以mysql用户身份启动 MySQL 服务器,mysqld_safe 是一个用于启动和监控 MySQL 服务器的脚本

  # 注意:此时上述命令执行完毕处于后台运行状态,需要另行启动一个终端


 
[root@server ~] # ps -ef | grep mysql                                  # 查看进程运行状态
[root@server ~] # cd /usr/local/mysql
[root@server mysql] # bin/mysql -u root -p                        # 登录,可能报错
 
     !!!报错才进行下面两步操作              # 报错,需要找到下面的文件进行软连接
[root@server mysql] # ln -s /usr/lib64/libncurses.so.6.3 /usr/lib64/libncurses.so.5
[root@server mysql] # ln -s /usr/lib64/libtinfo.so.6.3 /usr/lib64/libtinfo.so.5
 
[root@server mysql] # bin/mysql -u root -p                         #登录mysql
Enter password:                               # 粘贴之前的初始密码
mysql> alter user 'root' @ 'localhost' identified with mysql_native_password by
'123456' ; 修改密码
mysql> flush privileges;                   # 刷新
mysql> use mysql;                         # 查看账户信息
mysql> select user, host, plugin from mysql.user;
 
mysql>exit
[root@server mysql] # ps -ef | grep mysql
[root@server mysql] # kill -9 pid 号                             # 在当前终端关闭运行的mysql

 5.7设置mysql的配置文件

  # 回到之前的终端,敲一个回车,显示进程以杀死
[root@server mysql]# vim /etc/my.cnf                  # 新建配置文件,输入以下内容:
 

  注意:#号后是配置文件的解释
[client]                                                                    # 客户端设置
port = 3306                                                           # 默认端口号
socket = /tmp/mysql.sock                                     # 启动套接字
[mysqld]
###############################基础设置#####################################
port = 3306                                                           # 端口号 3306
basedir = /usr/local/mysql                                    # mysql安装根目录
datadir = /usr/local/mysql/data                            # mysql数据文件所在位置 没有改目录则创建
tmpdir = /tmp                                                       # 临时目录 比如load data infile会用到
socket = /tmp/mysql.sock                                   # 设置socke文件所在目录
character-set-server = utf8mb4                         #数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
  #数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_general_ci            
default-storage-engine = INNODB
###############################日志设置#####################################
  #数据库错误日志文件
log_error = error.log

  5.8 配置启动脚本

[root@master mysql] # vim /usr/lib/systemd/system/mysqld.service
 
[Unit]
Description = MySQL Server
After = network.target remote-fs.target nss-lookup.target
[Service]
Type = notify
User = mysql
Group = mysql
ExecStart = /usr/local/mysql/bin/mysqld --defaults-file = /etc/my.cnf
LimitNOFILE = 65535
LimitNPROC = 65535
Restart = on-failure
RestartPreventExitStatus = 1
TimeoutSec = 0
[root@master mysql] # systemctl daemon-reload
[root@master mysql] # systemctl enable --now mysqld.service               #设置开机自启动

  5.9. 设置mysql命令识别

[ root @server mysql ] # vim ~/.bash_profile            # 设置环境变量需添加如下语句
export PATH = $PATH:/usr/local/mysql/bin
[ root @server mysql ] # source ~/.bash_profile

  5.10. 测试

[root@server mysql] # mysql -V
mysql Ver 8 .0.45 for Linux on x86_64 (MySQL Community Server - GPL)
[root@server mysql] # systemctl is-active mysqld
active
[root@server ~] # mysql -uroot -p
Enter password:
mysql> show databases;
mysql> exit

  六、总结

    本篇完整覆盖 openEuler 系统下 MySQL 8.0 四大主流部署方案:YUM 在线仓库安装、本地 RPM 离线安装、Docker 容器化部署、生产通用二进制源码包安装,适配内网离线、云主机、容器集群、高可用生产等全场景需求。

  1. 选型适配梳理

    • YUM 安装:适合能联网的测试、办公服务器,命令极简,自动处理依赖,日常调试首选;
    • RPM 包安装:适用于仅有少量外网权限、可单独下载安装包的离线环境,可控安装版本;
    • Docker 容器部署:适合多环境快速复用、开发测试、多 MySQL 版本并行,隔离性强,迁移便捷;
    • 通用二进制包:企业生产最常用,自由度最高,数据目录、配置路径、运行权限全部自定义,适配高并发、多实例、安全加固等严苛生产规范。
  2. 通用避坑要点 openEuler 基于 RHEL 生态,systemd 服务名极易出现mysql/mysqld区分问题,启动报错Unit not found优先核对服务名称;MySQL 8.0 默认密码策略、caching_sha2_password 加密规则、防火墙 3306 放行、SELinux 权限是全安装方式的共性必配置项,无论哪种部署方式,都必须完成初始化密码修改、远程授权、端口放行三步基础配置。

  3. 落地选型建议 个人学习、快速搭环境:优先 YUM/Docker;企业内网离线批量装机:统一 RPM 批量脚本;正式业务生产库:优先通用二进制包,方便后期迁移、扩容、定制化运维。所有方案均兼容 openEuler 的系统权限机制,运维逻辑可无缝迁移至 CentOS、RHEL 等同源 Linux 系统。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐