本文提供了一个分步教程,演示如何在 Debian 12 上安装 MySQL 8。MySQL 是一个快速、稳定且真正的多用户、多线程 SQL 数据库服务器,其主要目标是速度、可靠性和易用性。要查看 MySQL 8 提供的功能的全面描述,请访问 Mysql 8参考文档(https://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html)。
Debian 12 的默认软件仓库中没有 MySQL 8。
sudo apt show mysql-server
安装 MySQL 8 的推荐方法是通过 MySQL APT 仓库;因此,需要在 Debian 12 上安装 MySQL APT 仓库。
下载 MySQL 8 APT 仓库安装程序:
wget https://repo.mysql.com//mysql-apt-config_0.8.34-1_all.deb
提示:也可以在官网下载仓库的安装包上传到服务器内。访问“https://www.mysql.com/downloads/” -> 点击中间行底部的“MySQL Community (GPL) Downloads »” -> 选择仓库类型,这里为“MySQL APT Repository”->点击“Download”
安装仓库:
apt install ./mysql-apt-config_0.8.34-1_all.deb -y
运行上诉命令后将会出现如下界面,选择 “Ok” 并按下 TAB 键以选择“”。按下回车键以继续安装仓库。。。

如果再次提示选择产品,请按上述步骤操作,然后按 ENTER 键完成 MySQL APT 资源库的安装。
在继续操作之前,请先使用命令apt update更新并升级系统软件包。

通过执行以下命令安装 MySQL 8:
apt install mysql-server -y
在安装过程中,系统会提示设置 MySQL 8 root 密码:

输入两次 root 密码后系统将自动安装完成。
安装完成后,MySQL 8 将立即启动并加入开机启动,以便在系统启动时运行;
systemctl status mysql
systemctl is-enabled mysql
也可以使用以下命令停止/启动/重启;
systemctl start mysql # 启动
systemctl stop mysql # 停止
systemctl restart mysql # 重启
MySQL 附带一个名为 mysql_secure_installation 的安全脚本,可帮助以以下方式实现 MySQL 安装的初始安全设置:
test_ 开头的数据库的权限。该脚本可通过以下方式简单执行:
mysql_secure_installation
运行时,输入 root 密码后,脚本会提示您是否要执行密码复杂性检查。 接受,选择密码强度;:

接下来,跳过或者设置根密码并接受其他提示,以删除匿名数据库用户、禁止远程 root 登录、删除测试数据库并重新加载权限表,以在 MySQL 中生效这些更改。

使用之前设置的密码,以 root 用户身份连接 MySQL 8。
mysql -uroot -p
登录到 MySQL 后,开头将显示连接ID以及版本号,此外还可以通过执行以下命令来查看版本:
mysql> SHOW VARIABLES LIKE "%version%";
默认限制:MySQL 8 默认仅允许本地连接(127.0.0.1),需手动配置远程访问权限。
登录 MySQL 并执行:
-- 创建专用远程用户(非root)
CREATE USER 'oneh'@'%' IDENTIFIED BY 'StrongPassword123!';
-- 查看用户表
use mysql;
SELECT host,user,authentication_string,plugin FROM user;
💡 安全建议:将
%替换为具体客户端IP(如'192.168.1.%')
-- 授予所有数据库权限(按需缩小范围)
GRANT ALL PRIVILEGES ON *.* TO 'oneh'@'%' WITH GRANT OPTION;
flush privileges;
从 MySQL 8 开始,MySQL 默认使用了新的身份验证插件 caching_sha2_password,取代了之前的 mysql_native_password。caching_sha2_password 是一种更安全的身份验证方式,它使用了SHA-256 散列算法,并支持公钥/私钥加密机制。
连接过程中可能会出现类似报错“UnableToConnectException: Public Key Retrieval is not allowed”。解决办法之一就是修改连接用户的加密规则,之二就是在连接时指定 allowPublicKeyRetrieval=true 参数。下面截图使用的是 dbeaver 修改参数后的测试:



定期备份策略
# 每日全量备份
mysqldump -u root -p --all-databases > /backups/mysql-full-$(date +%F).sql
性能优化配置
# /etc/mysql/my.cnf
[mysqld]
innodb_buffer_pool_size = 2G # 分配70%可用内存
max_connections = 500 # 根据业务调整
监控与警报
# 安装监控工具
apt install mytop mysql-utilities
风险点 | 加固方案 |
|---|---|
默认root远程访问 | 禁用远程root,使用专用账户 |
弱密码策略 | 启用validate_password组件 |
未加密远程连接 | 强制SSL:REQUIRE SSL |
3306端口公网暴露 | 防火墙白名单 + VPN访问限制 |
⚠️ 终极提醒:
SHOW GRANTS FOR 'user'@'host'恭喜! 您已成功构建企业级MySQL数据库环境,现在可安全部署应用程序。如需深度优化方案,请参考 MySQL 8 Performance Tuning Guide(https://dev.mysql.com/doc/refman/8.0/en/optimization.html)。