新买的linux服务器,安装mysql8.0
系统:debian 12
一、安装前准备
1、更新源、卸载mariadb、清除旧的mysql,确保是学习或新服务器才可这样操作
#更新系统软件源与依赖
sudo apt update && sudo apt upgrade -y
# 停止并禁用所有相关服务
sudo systemctl stop mysql mariadb 2>/dev/null
sudo systemctl disable mysql mariadb 2>/dev/null
# 卸载所有MySQL/MariaDB软件包
sudo apt purge -y mysql-* mariadb-* libmysqlclient* libmariadb*
sudo apt autoremove -y
sudo apt autoclean
# 删除所有数据、配置和日志文件(⚠️ 会永久删除所有数据库!有数据请先备份)
sudo rm -rf /etc/mysql /var/lib/mysql /var/log/mysql /var/run/mysqld /var/lib/mariadb
# 关键:删除所有旧APT源和密钥文件(这是解决签名错误的核心前提)
sudo rm -f /etc/apt/sources.list.d/mysql* /etc/apt/sources.list.d/mariadb*
sudo rm -f /usr/share/keyrings/mysql* /usr/share/keyrings/mariadb*
sudo rm -f /etc/apt/trusted.gpg.d/mysql* /etc/apt/trusted.gpg.d/mariadb*
# 清空APT缓存
sudo apt clean
二、手动创建 MySQL 8.0 LTS APT 源
1、创建配置文件
# 创建MySQL 8.0专属源配置文件
sudo tee /etc/apt/sources.list.d/mysql.list <<EOF
deb [arch=amd64 signed-by=/usr/share/keyrings/mysql.gpg] http://repo.mysql.com/apt/debian bookworm mysql-8.0
deb-src [signed-by=/usr/share/keyrings/mysql.gpg] http://repo.mysql.com/apt/debian bookworm mysql-8.0
EOF
2、导入 MySQL 官方 2025 最新有效密钥:使用官方 2025 年 11 月发布的新密钥,有效期至 2027 年 10 月:
# 下载并导入2025年最新官方密钥(这是全网唯一有效的密钥)
curl -fsSL https://repo.mysql.com/RPM-GPG-KEY-mysql-2025 | sudo gpg --dearmor -o /usr/share/keyrings/mysql.gpg
# 设置正确的密钥文件权限
sudo chmod 644 /usr/share/keyrings/mysql.gpg
#验证新密钥有效性(必须看到expires: 2027-10-22)
gpg --no-default-keyring --keyring /usr/share/keyrings/mysql.gpg --list-keys
# 更新源
sudo apt update
# 安装MySQL 8.0服务器和客户端
sudo apt install -y mysql-server mysql-client
3、注意,这边看了很多网上教程都是有bug安装不成功:wget https://repo.mysql.com//mysql-apt-config_0.8.34-1_all.deb 因为https://repo.mysql.com/RPM-GPG-KEY-mysql-2023 已经在 2025-10-22 过期,官方直到 2025 年 11 月才悄悄发布了RPM-GPG-KEY-mysql-2025新密钥,旧的 2023 密钥文件至今仍在官网未被删除,导致很多mysql8的安装教程都失效了。
4、对话框界面:
* 设置root密码

* 选择 MySQL 默认的用户密码加密 / 认证插件。
- 如果你是全新项目,且使用的驱动 / 客户端支持 MySQL 8.0+(比如新版 Go、Python、PHP 驱动),直接选推荐的
Use Strong Password Encryption,安全性更高。 - 如果你需要兼容旧版 PHP(如老版本的 PDO/MySQLi)、老版客户端或第三方工具,选
Use Legacy Authentication Method,避免后续连接报错。

三、安全配置和安装验证
1、给新装的 MySQL 做安全初始化、关闭高危默认配置,生产 / 自用环境必跑。
# 运行官方安全加固脚本
sudo mysql_secure_installation
2. 常见问答建议(直接照着选就行)
运行时提问,推荐答案(通用安全配置):
Change the password for root?→N(保留原有 root 密码,不会改动现有账号密码,适合已经提前设置好密码的场景。)Remove anonymous users?→Y(删除匿名用户)Disallow root login remotely?→Y(禁止 root 远程登录)Remove test database and access to it?→Y(移除 test 库)Reload privilege tables now?→Y(刷新权限)
3、验证安装结果
# 检查服务运行状态
sudo systemctl status mysql
# 登录MySQL并查询:root 对应的 host 为 localhost,不会出现 %(代表禁止远程登录)
mysql -u root -p -e "SELECT user,host FROM mysql.user;SELECT VERSION();"
- 现在
root仅能本机登录,外部机器 / 远程工具无法用 root 连接; - 若后续需要远程访问数据库,建议新建普通业务账号并授权,不要放开 root 远程权限。
四、如果是加强版:Use Strong Password Encryption创建账户
#先本地登录 MySQL
mysql -u root -p
1、无需兼容旧版mysql客户端的账户:适用于 PHP7.4.4+(mysqlnd)、新版mysql客户端
-- 创建允许所有IP访问的用户(%代表任意IP)
CREATE USER 'user_new'@'%' IDENTIFIED BY '你的强密码';
-- 如果只允许本地访问(更安全)
-- CREATE USER 'user_new'@'localhost' IDENTIFIED BY '你的强密码';
-- 如果只允许特定IP访问(生产环境推荐)
-- CREATE USER 'user_new'@'192.168.1.100' IDENTIFIED BY '你的强密码';
-- 授权所有数据库的所有权限(开发环境用,生产环境禁止)
GRANT ALL PRIVILEGES ON *.* TO 'user_new'@'%' WITH GRANT OPTION;
-- 只授权特定数据库的所有权限(推荐)
-- GRANT ALL PRIVILEGES ON 你的数据库名.* TO 'user_new'@'%';
-- 只授权特定权限(生产环境最佳实践)
-- GRANT SELECT, INSERT, UPDATE, DELETE ON 你的数据库名.* TO 'user_new'@'%';
--刷新权限使配置生效
FLUSH PRIVILEGES;
2、兼容旧客户端:传统加密 mysql_native_password (如果非必要,既然已经选择加强密码就不要再建兼容账户了)
--方式1:允许任意 IP访问(对应 % 规则)
-- 兼容版:指定传统加密插件,适配 Navicat12、低版本PHP等旧客户端
CREATE USER 'user_old'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
-- 授权所有库所有权限(开发环境)
GRANT ALL PRIVILEGES ON *.* TO 'user_old'@'%' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;
--方式2:仅本地访问
CREATE USER 'user_old'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';
GRANT ALL PRIVILEGES ON *.* TO 'user_old'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
-- 方式3:仅指定 IP访问(生产推荐)
CREATE USER 'user_old'@'192.168.1.100' IDENTIFIED WITH mysql_native_password BY '秘密';
GRANT ALL PRIVILEGES ON *.* TO 'user_old'@'192.168.1.100' WITH GRANT OPTION;
FLUSH PRIVILEGES;
3、删除账户
查询已有的用户:SELECT user,host FROM mysql.user;
删除具体用户:DROP USER 'user_new'@'%';
刷新权限:FLUSH PRIVILEGES;
4、注意:如果是腾讯云服务器,记得把防火墙配置允许端口3306策略
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)