首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >AlmaLinux上MySQL安装避坑全指南,新手也能一次点亮!

AlmaLinux上MySQL安装避坑全指南,新手也能一次点亮!

作者头像
IT咸鱼
发布2025-07-08 19:00:24
发布2025-07-08 19:00:24
4840
举报

你是不是刚接触Linux运维或者数据库,看着一堆教程头都大了?服务器是AlmaLinux(CentOS的好兄弟),想装个MySQL,结果各种报错扑面而来?别慌,这篇实测手把手教程,专治各种“安装失败综合症”,让你在IT咸鱼的路上少踩坑,一次搞定!咱不光装,还要讲清楚为啥这么装,命令在哪敲,文件放哪,注释写得明明白白。最后,咱还用Docker Compose优雅地整一个,保你学得通透!

一、 为啥选AlmaLinux?它和MySQL啥关系?

  • AlmaLinux是谁?简单说,它就是CentOS的“亲儿子”,继承了CentOS的稳定、可靠,专门为企业级应用而生。你用这个系统,说明眼光不错!
  • MySQL又是谁?数据库界的“扛把子”之一,无数网站和应用的后台数据仓库。它负责把你的数据(比如用户信息、文章内容)安全、高效地存起来、查出来。
  • 他俩啥关系?AlmaLinux是舞台(操作系统),MySQL是台上的主角(数据库服务)。舞台要搭得稳(系统配置好),主角才能唱好戏(MySQL才能稳定运行)。咱今天就是要在AlmaLinux这个舞台上,把MySQL这位主角请上台,并确保它唱得响亮!

二、 传统安装法(RPM包):稳扎稳打,步步为营 (避坑重点!)

在哪里执行命令?打开你的终端(Terminal),用 ssh连上你的AlmaLinux服务器,或者直接在服务器桌面打开终端。所有命令都在这里敲!

步骤1:准备工作 - 清场与开门

  1. 检查旧版本 (避免冲突): sudo rpm -qa|grep mysql  # 查看系统已安装的mysql相关包
  • 注释:rpm -qa列出所有已安装包,grep mysql过滤出名字含mysql的。如果看到有 mysql-*或 mariadb-*(MariaDB是MySQL的一个分支),强烈建议先卸载干净!(新手坑点1:残留旧版本导致冲突)
  • 如果发现旧包,卸载命令: bash sudo rpm -e --nodeps <包名1> <包名2> ... # 强制卸载,忽略依赖(谨慎,确保知道在做什么) # 例如: sudo rpm -e --nodeps mysql-community-libs-8.0.30-1.el8.x86_64
  • 注释:--nodeps表示强制卸载,即使有依赖关系。卸载后最好 sudo reboot重启一下系统更干净。
  1. 安装官方YUM仓库 (获取正版软件源): sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el8-7.noarch.rpm
  • 注释:dnf是AlmaLinux 8+的包管理器,类似 yum。这条命令下载并安装MySQL官方提供的仓库配置文件,告诉系统去哪里找最新的MySQL安装包。
  1. 导入GPG密钥 (确保软件安全可信): sudorpm--import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
  • 注释:就像给软件加个“防伪码”,确认你下载的包确实是MySQL官方发布的,没被篡改。

步骤2:安装MySQL服务器 - 主角登场

  1. 正式安装: sudo dnf install mysql-community-server
  • 注释:这条命令告诉系统:“从刚才设置好的官方仓库里,把名字叫 mysql-community-server的包和它需要的所有依赖包,都给我装好!” 等着它下载安装完成。

步骤3:启动服务 & 首次开机设置 - 让主角动起来

  1. 启动MySQL服务: sudo systemctl start mysqld       # 启动服务 sudo systemctl enable mysqld      # 设置开机自启 sudo systemctl status mysqld      # 检查状态,看到active (running) 就对了!
  • 注释:systemctl是管理系统服务的命令。start启动,enable设置自动启动,status查看状态。
  1. 查看初始密码 (重要!新手坑点2:找不到密码): sudogrep'temporary password' /var/log/mysqld.log
  • 注释:MySQL第一次启动时,会生成一个临时随机密码,并记录在日志文件 /var/log/mysqld.log里。这条命令帮你从日志里把包含 temporary password的那行找出来,密码就在最后面!务必记下来!长这样:A temporary password is generated for root@localhost: JqkfRqW2sh?e

步骤4:安全配置 (mysql_secure_installation) - 加固堡垒

这是避坑核心环节!很多安全问题(比如弱密码、匿名用户)都在这里处理。

  1. 运行配置脚本: sudo mysql_secure_installation
  2. 跟着提示一步步走 (仔细看!):
  • Enter password for user root:输入你刚才记下的那个又长又乱的临时密码。输完回车。
  • Change the password for root? [Y/n]:输入 Y(必须改!)。然后输入你想设置的强壮新密码(MySQL 8默认要求:大小写字母+数字+特殊符号,至少8位。新手坑点3:密码太简单通不过!)。再确认输入一次。
  • Remove anonymous users? [Y/n]:输入 Y。删除匿名用户,提高安全。
  • Disallow root login remotely? [Y/n]:输入 Y。禁止root用户远程登录,更安全。以后用普通用户+sudo或专门的管理用户远程管理。
  • Remove test database and access to it? [Y/n]:输入 Y。删掉默认的测试库。
  • Reload privilege tables now? [Y/n]:输入 Y。让上面的安全设置立刻生效。

步骤5:登录测试 - 验明正身

  1. 用新密码登录: mysql -u root -p
  • 注释:-u root指定用户名为root,-p表示接下来要输入密码。回车后,输入你刚刚设置的强壮新密码
  1. 看到 mysql>提示符:恭喜!你已经成功进入MySQL的命令行界面了!就像这样: Welcome to the MySQL monitor.Commands end with; or \g. YourMySQL connection id is  Server version:8.0.33MySQLCommunityServer-GPL ... mysql>
  2. 简单验证:敲个命令看看版本: SELECT VERSION();

回车,你应该能看到安装的MySQL版本号(比如 8.0.33)。 4.  退出:输入 exit;或 \q回车,回到系统命令行。


(图1:MySQL安装成功登录及查询版本截图 - 这里想象一下你的终端截图,包含 mysql -u root -p登录过程、SELECT VERSION();的结果和 exit;退出)


三、 优雅之选:Docker Compose部署MySQL (一键搞定,隔离干净)

为啥用Docker Compose?它能把MySQL服务器、配置、数据卷打包成一个“集装箱”,一键启动、停止,和你的AlmaLinux主机环境隔离,干净又方便!升级、迁移也容易。特别适合测试、学习、或者想快速搞一个数据库环境。 

图片
图片

在哪里操作?还是在你的AlmaLinux终端里。确保你已经安装了Docker和Docker Compose。没装?先看官方文档装好!

步骤1:准备Docker Compose文件 (docker-compose.yml) - 部署蓝图

  1. 创建项目目录: mkdir mysql-docker &&cd mysql-docker  # 创建并进入目录
  2. 创建 docker-compose.yml文件: nano docker-compose.yml  # 或用vim/vi
  3. 把下面的内容复制进去,注释已加好: version:'3.8'# 指定Compose文件版本,建议3.4+ services: mysql_db:# 定义我们的MySQL服务,名字叫mysql_db image: mysql:8.0.33  # 使用官方MySQL 8.0.33镜像 (可指定其他版本) container_name: my_mysql_container  # 给容器起个名字,方便管理 restart: always  # 容器退出时总是重启,保证服务高可用 environment:# 设置环境变量 (相当于配置MySQL参数) MYSQL_ROOT_PASSWORD: ITxianyu_R00tP@ss!# 设置root用户的密码 (务必改成你的强密码!) MYSQL_DATABASE:'my_app_db'# 容器启动时自动创建一个数据库,名字叫my_app_db MYSQL_USER:'app_user'# 创建一个普通用户app_user MYSQL_PASSWORD:'App_User_P@ss123'# 设置app_user的密码 (务必改成你的强密码!) volumes:# 数据卷映射,非常重要!把容器内的数据存到主机上,避免容器销毁数据丢失 - mysql_data:/var/lib/mysql  # 将容器内MySQL的数据目录(/var/lib/mysql)映射到名叫mysql_data的Docker卷 - ./my.cnf:/etc/mysql/conf.d/custom.cnf # (可选)映射自定义配置文件 ports:# 端口映射,将容器内的3306端口映射到主机的3306端口 -"3306:3306"# 格式: "主机端口:容器端口" networks:# 加入网络 - mysql_net # 定义数据卷 (Docker会管理它,位置通常在/var/lib/docker/volumes/) volumes: mysql_data:# 定义了一个名为mysql_data的卷 # 定义网络 (让容器在独立网络里通信) networks: mysql_net:# 定义了一个名为mysql_net的网络
  • 关键注释:
  • MYSQL_ROOT_PASSWORDMYSQL_PASSWORD这是大坑预警!Docker方式启动时,必须通过环境变量设置root密码,否则容器启动失败!而且密码要符合强度要求。
  • volumes: - mysql_data:/var/lib/mysql这是保命配置!把数据库文件存在Docker管理的 mysql_data卷里。即使你删了容器 (docker-compose down),只要卷还在,数据就还在!下次 docker-compose up数据就回来了。没有这个映射,容器一删,数据全丢!
  • ports: - "3306:3306": 把容器里的MySQL端口(3306)映射到主机的3306端口。这样你才能用DataGrip连上它。如果主机3306被占用,改前面那个数字,比如 "3307:3306"
  • networks: 创建一个专属网络,让以后可能加入的其他容器(比如Web应用)能和MySQL在这个内部网络里安全通信,不需要暴露MySQL端口到主机(更安全)。

步骤2:一键启动! - 见证魔法

在包含 docker-compose.yml文件的目录下 (mysql-docker),执行:

代码语言:javascript
复制

docker-compose up -d# -d 表示在后台运行

输出示例:

代码语言:javascript
复制

Creating network "mysql-docker_mysql_net"with the default driver
Creating volume "mysql-docker_mysql_data"withdefault driver
Pullingmysql_db(mysql:8.0.33)...
...
Status:Downloaded newer image formysql:8.0.33
Creating my_mysql_container ... done
  • 注释:docker-compose up读取 docker-compose.yml文件,拉取镜像(如果本地没有),创建卷、网络,最后启动容器。-d让它后台运行。

步骤3:检查运行状态

代码语言:javascript
复制

docker-composeps# 查看本目录下Compose管理的容器状态
# 或
dockerps# 查看所有运行中的容器,应该能看到 my_mysql_container

看到状态是 Up (healthy)就表示MySQL容器跑起来了!

步骤4:快速测试连接 (可选)

可以用 docker-compose exec直接在容器内执行 mysql命令登录:

代码语言:javascript
复制

docker-composeexec mysql_db mysql -u root -p

然后输入你在 docker-compose.yml里设置的 MYSQL_ROOT_PASSWORD(ITxianyu_R00tP@ss!)。能看到 mysql>提示符就OK!输入 exit;退出。


四、 连接神器:DataGrip 实战 (图形化操作真香)

为啥用DataGrip?JetBrains出品的数据库管理神器,智能提示强、功能全、界面友好,管理MySQL体验超棒!IT咸鱼必备生产力工具!

步骤:用DataGrip连接你的MySQL (无论哪种方式安装)

  1. 打开DataGrip
  2. 新建数据源(DataSource)
  • 点击 +-> Data Source-> MySQL
  • Connection 标签页:
  • Host:如果是 本地安装的MySQL或 Docker映射到localhost:填 localhost或 127.0.0.1
  • Port:默认 3306(如果Docker映射时改了主机端口,比如 3307:3306,这里填 3307)。
  • User:连接用户名。传统安装用 root;Docker方式也可以用 root,或者用创建的 app_user
  • Password:输入对应的密码。勾选 Save password方便下次。
  • Database (可选):如果想连上就默认打开某个库(比如Docker创建的 my_app_db),可以填上。
  • SSH/SSL 标签页 (如果需要):
  • 如果你的MySQL服务器在远程AlmaLinux主机上(非本机Docker),通常需要通过SSH隧道连接(更安全)。
  • 勾选 Use SSH tunnel
  • SSH host:填你的AlmaLinux服务器的公网IP或域名。
  • Port:默认 22
  • User:填你登录AlmaLinux服务器的用户名(如 root或你的普通用户)。
  • Authentication type:选 Key pair (OpenSSH)或 Password。推荐用SSH Key更安全。
  • 配置好SSH认证信息。
  • Driver 标签页:DataGrip通常会自动下载合适的MySQL驱动。如果没驱动,点 Download按钮下载。
  1. 点击 Test Connection按钮!这是关键一步!
  • 成功:弹出绿框 “Succeeded”。
  • 失败:仔细看错误信息!常见坑点及解决:
  • Access denied:用户名/密码错!检查大小写,确认密码。Docker方式确认环境变量设置对了。传统安装确认 mysql_secure_installation后新密码。
  • Can't connect to MySQL server on 'localhost' (10061):MySQL服务没启动!传统安装用 sudo systemctl status mysqld检查启动。Docker方式用 docker-compose psdocker ps检查容器是否运行。
  • Public Key Retrieval is not allowed:在DataGrip连接的 Advanced 标签页里,添加一个连接参数:allowPublicKeyRetrieval=true。这是MySQL驱动的新安全策略导致。
  • Host 'xxx.xxx.xxx.xxx ' is not allowed to connect:传统安装的MySQL默认root不能远程连!你需要登录MySQL命令行 (mysql -u root -p) 然后授权: sql CREATE USER 'your_remote_user'@'%' IDENTIFIED BY 'StrongPassword!'; -- 创建远程用户 GRANT ALL PRIVILEGES ON *.* TO 'your_remote_user'@'%' WITH GRANT OPTION; -- 授权 (按需调整权限范围) FLUSH PRIVILEGES; -- 刷新权限 
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-07-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT咸鱼 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档