Linux(Debian)安装、卸载 MySQL

一、前置准备

1.更新系统包索引,确保依赖最新

bash 复制代码
sudo apt update && sudo apt upgrade -y

2.安装必要依赖(用于添加 HTTPS 仓库和导入 GPG 密钥)

bash 复制代码
sudo apt install -y wget gnupg lsb-release

二、添加MySQL官方仓库

1.导入 MySQL 官方 GPG 密钥(验证包完整性)

这一步作用是 从 MySQL 官方服务器下载「MySQL 仓库配置包」 ,这个包是后续能通过 apt 命令安装 MySQL 8.0 的关键前提。

Debian 系统的默认软件源(官方 apt 仓库)中,没有 MySQL 8.0 的官方包------Debian 官方默认提供的是 MySQL 的分支版本「MariaDB」。

如果直接执行 sudo apt install mysql-server,安装的会是 MariaDB 而非 MySQL。因此必须先手动添加「MySQL 官方的 apt 仓库」,才能让 apt 识别到 MySQL 8.0 的安装包

如果命令无法下载,可以到MySQL官网获取最新的mysql-apt-config 包地址

bash 复制代码
wget https://dev.mysql.com/get/mysql-apt-config_0.8.36-1_all.deb

2.安装仓库配置包(会弹出交互界面,默认选择 MySQL 8.0 即可,直接回车确认)

bash 复制代码
sudo dpkg -i mysql-apt-config_0.8.36-1_all.deb

3.再次更新包索引,加载 MySQL 仓库的包信息

bash 复制代码
sudo apt update

三、安装MySQL服务

1.安装 MySQL 服务器核心包

安装过程中会弹出 设置 root 密码 的交互界面,输入强密码(字母 + 数字 + 特殊字符)并确认(注意:MySQL 8.0 要求密码强度不低于中等)

bash 复制代码
sudo apt install -y mysql-server

2.验证安装是否成功

bash 复制代码
sudo systemctl status mysql

3.如果未自动启动,可以手动启动

bash 复制代码
sudo systemctl start mysql

4.设置开机自启动

bash 复制代码
sudo systemctl enable mysql

四、初始化配置

1.运行安全脚本(非必须,按需要执行)

MySQL 提供了 mysql_secure_installation 脚本,用于删除默认匿名用户、禁止 root 远程登录、删除测试数据库等

bash 复制代码
sudo mysql_secure_installation

按照提示逐步操作:

  • 输入第一步设置的 root 密码;
  • 询问是否启用 VALIDATE PASSWORD COMPONENT(密码强度验证):建议选 Y(是),后续按提示选择密码强度等级(0 = 低,1 = 中,2 = 高);
  • 若已设置强密码,可直接回车确认(无需修改);
  • 依次回答 Y(确认删除匿名用户、禁止 root 远程登录、删除 test 数据库、刷新权限表)。

2.登录MySQL

bash 复制代码
sudo mysql -u root -p

输入第一步设置的 root 密码,成功登录后会显示 mysql> 提示符,说明安装正常

五、其它的一些可选配置

1.允许远程登录

修改 root 认证方式为 mysql_native_password(兼容旧客户端),并授权远程访问

bash 复制代码
-- 切换到 mysql 系统数据库
USE mysql;
-- 修改 root 认证方式和允许远程访问(% 表示所有IP,可改为具体IP如192.168.1.100)
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的root密码';
-- 刷新权限
FLUSH PRIVILEGES;

2.创建新用户

bash 复制代码
-- 创建用户(例如:my_user,允许本地访问 localhost,密码:my_password)
CREATE USER 'my_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'my_password';
-- 授权用户操作数据库(所有权限)
GRANT ALL PRIVILEGES ON my_db.* TO 'my_user'@'localhost';
-- 若需远程访问,创建用户时改为 '%':
-- CREATE USER 'my_user'@'%' IDENTIFIED WITH mysql_native_password BY 'my_password';
-- GRANT ALL PRIVILEGES ON my_db.* TO 'my_user'@'%';
-- 刷新权限
FLUSH PRIVILEGES;

六、常见问题排查

1.安装时未弹出密码设置界面

执行 sudo dpkg-reconfigure mysql-server 重新配置密码。

2.登录报错 Access denied for user 'root'@'localhost'

auth_socket 认证方式不允许直接密码登录,需用 sudo mysql -u root(无需 -p)登录,再修改认证方式(参考步骤五.1)

3.远程连接失败

检查 MySQL 配置文件 /etc/mysql/mysql.conf.d/mysqld.cnfbind-address 是否为 0.0.0.0(允许所有 IP),默认是 127.0.0.1(仅本地)

bash 复制代码
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

注释或修改 bind-address = 0.0.0.0,保存后重启 MySQL

bash 复制代码
sudo systemctl restart mysql

七、卸载MySQL

bash 复制代码
# 停止服务
sudo systemctl stop mysql
# 卸载核心包
sudo apt purge -y mysql-server mysql-client mysql-common
# 删除残留文件和目录
sudo rm -rf /var/lib/mysql /etc/mysql
# 清理依赖
sudo apt autoremove -y && sudo apt autoclean
相关推荐
都在酒里9 小时前
Linux字符设备驱动开发(十):综合实例——I2C传感器 + LED智能控制与进阶指南
linux·运维·服务器·驱动开发·交互
2301_8090511416 小时前
Linux 网络编程 学习笔记
linux·网络·学习
wanhengidc16 小时前
服务器租用有何优点
运维·服务器·安全·web安全
ZGi.ai16 小时前
人工审查节点:让自动化工作流多一步人工把关
运维·人工智能·自动化·人机协同·智能体工作流·人工审查
坤昱16 小时前
cfs调度类深入解刨——最新内核细节分析2
linux·服务器·cfs·cfs调度·eevdf调度·eevdf·kernel 7.1
艾莉丝努力练剑17 小时前
【Linux:文件】Ext系列文件系统进阶
linux·运维·服务器·c++·文件系统·文件io·ext
海市公约17 小时前
Linux核心基础命令与权限管理实战指南
linux·运维·服务器·vim·权限管理·系统监控·命令行
eggcode17 小时前
【Qt学习】Linux(ARM架构)在线安装Qt6.x
linux·qt·学习·arm
wkd_00717 小时前
Ubuntu 22.04 Samba 连接故障排查记:从“用户名或密码错误”到 NTLM 版本不兼容
linux·运维·ubuntu
企服AI产品测评局17 小时前
Agent适配信创环境实测:企业级自动化如何实现国产操作系统与数据库全兼容?
运维·数据库·人工智能·ai·chatgpt·自动化