
官方推荐使用
apt 包管理器来安装,这是最简单、最安全的方法。
下面是详细的步骤指南,适用于 Debian 10 (Buster), Debian 11 (Bullseye) 和 Debian 12 (Bookworm)。
-
更新软件包列表:确保你的系统信息是最新的。
-
安装 MySQL 服务器:使用
apt 安装 mysql-server 包。
-
运行安全配置脚本:执行官方提供的脚本来增强安全性。
-
验证安装:检查 MySQL 服务是否已成功启动并运行。
-
(可选)配置远程访问:如果你需要从其他机器连接到数据库。
首先,打开终端并执行以下命令,确保你的 apt 包索引是最新的。这可以保证你安装的是 Debian 仓库中最新的 MySQL 版本。
Debian 的默认软件源中包含了 MySQL 服务器。你可以直接安装 mysql-server 包,apt 会自动处理所有依赖关系。
sudo apt install mysql-server
在安装过程中,系统会自动下载并安装 MySQL 服务器及其所需的库文件。对于较新的 Debian 版本(如 Debian 10+),安装程序会自动为 root 用户设置一个强密码,并使用 auth_socket 插件进行认证(见下面的说明)。
MySQL 安装完成后,强烈建议运行一个名为 mysql_secure_installation 的官方脚本。这个脚本会引导你完成一系列安全设置,极大地提高数据库的安全性。
sudo mysql_secure_installation
执行后,脚本会问你几个问题,请根据提示回答:
-
设置 root 密码:如果你在安装时没有设置密码,这里会提示你设置一个。如果已经设置,请直接按
Y 继续。
-
移除匿名用户 (Remove anonymous users?):强烈建议选择
Y (Yes)。删除匿名用户可以防止未经授权的访问。
-
禁止 root 用户远程登录 (Disallow root login remotely?):强烈建议选择
Y (Yes)。这可以防止攻击者从网络上直接尝试破解 root 密码。你应该创建一个具有特定权限的普通用户来进行远程管理。
-
移除测试数据库 (Remove test database and access to it?):建议选择
Y (Yes)。测试数据库默认存在,并且对匿名用户可见,删除它可以减少攻击面。
-
重新加载权限表 (Reload privilege tables now?):必须选择
Y (Yes),以使所有更改立即生效。
完成以上步骤后,你的 MySQL 服务器就基本安全了。
你可以通过以下几种方式来检查 MySQL 服务是否正在运行。
方法一:检查服务状态
sudo systemctl status mysql
如果服务正在运行,你会看到类似 active (running) 的绿色字样。
方法二:尝试登录
你可以尝试使用 root 用户登录到 MySQL 命令行界面。
注意:在较新的 Debian 版本中,root 用户默认使用 auth_socket 插件认证,而不是密码。这意味着只有通过 sudo 命令的系统用户才能以 root 身份登录 MySQL。如果你直接运行 mysql -u root -p 并输入密码,可能会失败。
如果想使用密码登录 root 用户,请参考下面的 “(可选) 修改 root 用户认证方式” 部分。
如果登录成功,你会看到 MySQL 的欢迎信息和 mysql> 提示符,说明安装成功!
默认情况下,MySQL 只监听本机 (127.0.0.1) 的连接。如果你需要从其他电脑连接到这台数据库服务器,需要修改两个配置文件。
1. 修改 MySQL 配置文件
编辑 MySQL 的主配置文件 mysqld.cnf。
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
找到 [mysqld] 部分,修改或注释掉 bind-address 这一行,让 MySQL 监听所有网络接口。
修改后,保存文件并退出。
2. 重启 MySQL 服务
为了让配置生效,需要重启 MySQL 服务。
sudo systemctl restart mysql
3. 配置防火墙
你还需要确保你的服务器防火墙允许 MySQL 的端口(默认为 3306)通过。如果使用 ufw:
4. 创建远程登录用户
出于安全考虑,不建议直接使用 root 用户进行远程登录。你应该创建一个新用户并授予相应的权限。
sudo mysql
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 服务器了。
原因:如前所述,新版 Debian 默认使用 auth_socket 插件。
解决方案:登录 MySQL,然后修改 root 用户的认证插件为 mysql_native_password 并设置密码。
sudo mysql
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_strong_password';
FLUSH PRIVILEGES;
EXIT;
现在你应该可以使用以下命令,通过密码登录了:
至此,你已经成功在 Debian 系统上安装、配置并安全地运行了 MySQL 服务器。