
你是不是刚接触Linux运维或者数据库,看着一堆教程头都大了?服务器是AlmaLinux(CentOS的好兄弟),想装个MySQL,结果各种报错扑面而来?别慌,这篇实测手把手教程,专治各种“安装失败综合症”,让你在IT咸鱼的路上少踩坑,一次搞定!咱不光装,还要讲清楚为啥这么装,命令在哪敲,文件放哪,注释写得明明白白。最后,咱还用Docker Compose优雅地整一个,保你学得通透!
一、 为啥选AlmaLinux?它和MySQL啥关系?
二、 传统安装法(RPM包):稳扎稳打,步步为营 (避坑重点!)
在哪里执行命令?打开你的终端(Terminal),用
ssh连上你的AlmaLinux服务器,或者直接在服务器桌面打开终端。所有命令都在这里敲!
步骤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重启一下系统更干净。sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el8-7.noarch.rpm
dnf是AlmaLinux 8+的包管理器,类似 yum。这条命令下载并安装MySQL官方提供的仓库配置文件,告诉系统去哪里找最新的MySQL安装包。sudorpm--import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
步骤2:安装MySQL服务器 - 主角登场
sudo dnf install mysql-community-server
mysql-community-server的包和它需要的所有依赖包,都给我装好!” 等着它下载安装完成。步骤3:启动服务 & 首次开机设置 - 让主角动起来
sudo systemctl start mysqld # 启动服务
sudo systemctl enable mysqld # 设置开机自启
sudo systemctl status mysqld # 检查状态,看到active (running) 就对了!
systemctl是管理系统服务的命令。start启动,enable设置自动启动,status查看状态。sudogrep'temporary password' /var/log/mysqld.log
/var/log/mysqld.log里。这条命令帮你从日志里把包含 temporary password的那行找出来,密码就在最后面!务必记下来!长这样:A temporary password is generated for root@localhost: JqkfRqW2sh?e步骤4:安全配置 (mysql_secure_installation) - 加固堡垒
这是避坑核心环节!很多安全问题(比如弱密码、匿名用户)都在这里处理。
sudo mysql_secure_installation
Y(必须改!)。然后输入你想设置的强壮新密码(MySQL 8默认要求:大小写字母+数字+特殊符号,至少8位。新手坑点3:密码太简单通不过!)。再确认输入一次。Y。删除匿名用户,提高安全。Y。禁止root用户远程登录,更安全。以后用普通用户+sudo或专门的管理用户远程管理。Y。删掉默认的测试库。Y。让上面的安全设置立刻生效。步骤5:登录测试 - 验明正身
mysql -u root -p
-u root指定用户名为root,-p表示接下来要输入密码。回车后,输入你刚刚设置的强壮新密码。mysql>提示符:恭喜!你已经成功进入MySQL的命令行界面了!就像这样:
Welcome to the MySQL monitor.Commands end with; or \g.
YourMySQL connection id is
Server version:8.0.33MySQLCommunityServer-GPL
...
mysql>
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) - 部署蓝图
mkdir mysql-docker &&cd mysql-docker # 创建并进入目录
docker-compose.yml文件:
nano docker-compose.yml # 或用vim/vi
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_PASSWORD/ MYSQL_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),执行:
docker-compose up -d# -d 表示在后台运行
输出示例:
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:检查运行状态
docker-composeps# 查看本目录下Compose管理的容器状态
# 或
dockerps# 查看所有运行中的容器,应该能看到 my_mysql_container
看到状态是 Up (healthy)就表示MySQL容器跑起来了!
步骤4:快速测试连接 (可选)
可以用 docker-compose exec直接在容器内执行 mysql命令登录:
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 (无论哪种方式安装)
+-> Data Source-> MySQL。localhost或 127.0.0.1。3306(如果Docker映射时改了主机端口,比如 3307:3306,这里填 3307)。root;Docker方式也可以用 root,或者用创建的 app_user。Save password方便下次。my_app_db),可以填上。Use SSH tunnel。SSH host:填你的AlmaLinux服务器的公网IP或域名。Port:默认 22。User:填你登录AlmaLinux服务器的用户名(如 root或你的普通用户)。Authentication type:选 Key pair (OpenSSH)或 Password。推荐用SSH Key更安全。Download按钮下载。Test Connection按钮!这是关键一步!mysql_secure_installation后新密码。sudo systemctl status mysqld检查启动。Docker方式用 docker-compose ps/ docker ps检查容器是否运行。allowPublicKeyRetrieval=true。这是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; -- 刷新权限