debian安装mysql,最简单、最安全的方法

首页 2025-10-09 10:07:05


官方推荐使用 apt 包管理器来安装,这是最简单、最安全的方法。
下面是详细的步骤指南,适用于 Debian 10 (Buster), Debian 11 (Bullseye) 和 Debian 12 (Bookworm)。

核心步骤概览

  1. 更新软件包列表:确保你的系统信息是最新的。
  2. 安装 MySQL 服务器:使用 apt 安装 mysql-server 包。
  3. 运行安全配置脚本:执行官方提供的脚本来增强安全性。
  4. 验证安装:检查 MySQL 服务是否已成功启动并运行。
  5. (可选)配置远程访问:如果你需要从其他机器连接到数据库。

详细步骤

第 1 步:更新软件包列表

首先,打开终端并执行以下命令,确保你的 apt 包索引是最新的。这可以保证你安装的是 Debian 仓库中最新的 MySQL 版本。
bash
sudo apt update
 

第 2 步:安装 MySQL 服务器

Debian 的默认软件源中包含了 MySQL 服务器。你可以直接安装 mysql-server 包,apt 会自动处理所有依赖关系。
bash
sudo apt install mysql-server
 
在安装过程中,系统会自动下载并安装 MySQL 服务器及其所需的库文件。对于较新的 Debian 版本(如 Debian 10+),安装程序会自动为 root 用户设置一个强密码,并使用 auth_socket 插件进行认证(见下面的说明)。

第 3 步:运行安全配置脚本 (非常重要)

MySQL 安装完成后,强烈建议运行一个名为 mysql_secure_installation 的官方脚本。这个脚本会引导你完成一系列安全设置,极大地提高数据库的安全性。
bash
sudo mysql_secure_installation
 
执行后,脚本会问你几个问题,请根据提示回答:
  1. 设置 root 密码:如果你在安装时没有设置密码,这里会提示你设置一个。如果已经设置,请直接按 Y 继续。
  2. 移除匿名用户 (Remove anonymous users?)强烈建议选择 Y (Yes)。删除匿名用户可以防止未经授权的访问。
  3. 禁止 root 用户远程登录 (Disallow root login remotely?)强烈建议选择 Y (Yes)。这可以防止攻击者从网络上直接尝试破解 root 密码。你应该创建一个具有特定权限的普通用户来进行远程管理。
  4. 移除测试数据库 (Remove test database and access to it?)建议选择 Y (Yes)。测试数据库默认存在,并且对匿名用户可见,删除它可以减少攻击面。
  5. 重新加载权限表 (Reload privilege tables now?)必须选择 Y (Yes),以使所有更改立即生效。
完成以上步骤后,你的 MySQL 服务器就基本安全了。

第 4 步:验证安装

你可以通过以下几种方式来检查 MySQL 服务是否正在运行。
方法一:检查服务状态
bash
sudo systemctl status mysql
 
如果服务正在运行,你会看到类似 active (running) 的绿色字样。
方法二:尝试登录
你可以尝试使用 root 用户登录到 MySQL 命令行界面。
bash
sudo mysql
 
注意:在较新的 Debian 版本中,root 用户默认使用 auth_socket 插件认证,而不是密码。这意味着只有通过 sudo 命令的系统用户才能以 root 身份登录 MySQL。如果你直接运行 mysql -u root -p 并输入密码,可能会失败。
如果想使用密码登录 root 用户,请参考下面的 “(可选) 修改 root 用户认证方式” 部分。
如果登录成功,你会看到 MySQL 的欢迎信息和 mysql> 提示符,说明安装成功!

第 5 步:(可选) 配置远程访问

默认情况下,MySQL 只监听本机 (127.0.0.1) 的连接。如果你需要从其他电脑连接到这台数据库服务器,需要修改两个配置文件。
1. 修改 MySQL 配置文件
编辑 MySQL 的主配置文件 mysqld.cnf
bash
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
 
找到 [mysqld] 部分,修改或注释掉 bind-address 这一行,让 MySQL 监听所有网络接口。
ini
# 将 bind-address = 127.0.0.1 修改为
bind-address = 0.0.0.0
 
修改后,保存文件并退出。
2. 重启 MySQL 服务
为了让配置生效,需要重启 MySQL 服务。
bash
sudo systemctl restart mysql
 
3. 配置防火墙
你还需要确保你的服务器防火墙允许 MySQL 的端口(默认为 3306)通过。如果使用 ufw
bash
sudo ufw allow 3306/tcp
 
4. 创建远程登录用户
出于安全考虑,不建议直接使用 root 用户进行远程登录。你应该创建一个新用户并授予相应的权限。
sql
-- 登录 MySQL
sudo mysql

-- 创建一个新用户 'remote_user',允许从任何主机 (%) 连接
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'a_strong_password';

-- 授予该用户对所有数据库的所有权限(请根据实际需求调整权限范围)
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;

-- 刷新权限使其生效
FLUSH PRIVILEGES;

-- 退出
EXIT;
 
现在你就可以从其他机器使用 remote_user 和密码连接到这个 MySQL 服务器了。

常见问题与解决方案

问题:无法使用密码登录 root 用户

原因:如前所述,新版 Debian 默认使用 auth_socket 插件。
解决方案:登录 MySQL,然后修改 root 用户的认证插件为 mysql_native_password 并设置密码。
bash
# 1. 使用 sudo 登录
sudo mysql

# 2. 切换到 mysql 数据库
USE mysql;

# 3. 修改 root 用户的认证方式和密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_strong_password';

# 4. 刷新权限
FLUSH PRIVILEGES;

# 5. 退出
EXIT;
 
现在你应该可以使用以下命令,通过密码登录了:
bash
mysql -u root -p
 

至此,你已经成功在 Debian 系统上安装、配置并安全地运行了 MySQL 服务器。
MySQL连接就这么简单!本地远程、编程语言连接方法一网打尽
还在为MySQL日期计算头疼?这份加一天操作指南能解决90%问题
MySQL日志到底在哪里?Linux/Windows/macOS全平台查找方法在此
MySQL数据库管理工具全景评测:从Workbench到DBeaver的技术选型指南
MySQL密码忘了怎么办?这份重置指南能救急,Windows/Linux/Mac都适用
你的MySQL为什么经常卡死?可能是锁表在作怪!快速排查方法在此
MySQL单表卡爆怎么办?从策略到实战,一文掌握「分表」救命技巧
清空MySQL数据表千万别用错!DELETE和TRUNCATE这个区别可能导致重大事故
你的MySQL中文排序一团糟?记住这几点,轻松实现准确拼音排序!
别再混淆Hive和MySQL了!读懂它们的天壤之别,才算摸到大数据的门道