Kali Linux 默认预装 MariaDB(MySQL 的开源分支),无需额外安装即可配置和使用。本教程将指导您完成 MariaDB 服务的启动、配置、区分本地和远程 root
用户,以及通过 Windows 客户端(如 Navicat)进行远程连接的完整流程。
1. 区分本地和远程 root
用户
在开始之前,我们需要了解一些基础知识。MariaDB 的用户权限基于 用户名 + 主机名 的组合定义。'root'@'localhost'
和 'root'@'%'
是两个不同的用户账户,尽管用户名都是 root
。
属性 | 本地 root 用户 ('root'@'localhost' ) |
远程 root 用户 ('root'@'%' ) |
---|---|---|
主机名 (Host) | localhost |
% (任意主机)或特定 IP/域名 |
访问方式 | 仅限本地主机登录(如终端) | 可从远程主机登录(如 Windows 客户端) |
默认存在 | 默认存在(Kali 安装 MariaDB 时创建) | 默认不存在,需手动创建 |
典型用途 | 本地管理数据库 | 远程管理数据库 |
连接示例 | mariadb -u root -p |
mysql -h <Kali_IP> -u root -p |
- 本地
root
('root'@'localhost'
) : 默认存在,仅允许从运行 MariaDB 的本地主机登录,使用 Unix 套接字或127.0.0.1
。 - 远程
root
('root'@'%'
): 默认不存在,需显式创建,允许从任意主机通过网络连接。
验证用户 :
登录 MariaDB:
bash
sudo mariadb -u root -p
查询用户列表:
sql
SELECT User, Host FROM mysql.user;
示例输出:
+------+-----------+
| User | Host |
+------+-----------+
| root | localhost |
+------+-----------+
若无 'root'@'%'
,需创建以支持远程连接。
2. 启动 MariaDB 服务
Kali 默认已安装 MariaDB,启动服务并设置开机自启:
bash
# 启动 MariaDB 服务
sudo systemctl start mariadb
# 设置开机自启
sudo systemctl enable mariadb

(如图,mysql
和 mariadb
其实是同一个服务)
验证服务状态:
bash
sudo systemctl status mariadb
3. 配置本地 root
用户(可选)
为增强安全性,运行安全配置向导,设置 root@localhost
密码并移除不安全默认设置:
bash
sudo mariadb-secure-installation
按提示操作,建议:
- 启用密码验证插件(VALIDATE PASSWORD PLUGIN)。
- 为
root@localhost
设置强密码。 - 移除匿名用户和测试数据库。
- 禁用远程
root
登录(若无需远程root
访问)。
注意 :Kali 的 MariaDB 默认已较为安全,运行此脚本可能提示无需更改。若跳过此步骤,确保
root@localhost
已设置强密码。
验证本地登录:
bash
sudo mariadb -u root -p
输入密码,进入 MariaDB [(none)]>
提示符表示配置正常。
4. 配置远程连接
为允许 Windows 客户端连接,需修改监听地址并授权远程用户。
4.1 修改监听地址
默认 MariaDB 仅监听本地地址(127.0.0.1)。为允许远程连接,修改配置文件:
bash
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
找到:
bind-address = 127.0.0.1
改为:
bind-address = 0.0.0.0
保存退出后,重启服务:
bash
sudo systemctl restart mariadb
4.2 创建并授权远程 root
用户
登录 MariaDB:
bash
sudo mariadb -u root -p
根据需求选择:
选项 1:创建带空密码的 'root'@'%'
(仅限测试)
sql
CREATE USER 'root'@'%' IDENTIFIED BY '';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
选项 2:创建带强密码的 'root'@'%'
(推荐)
sql
CREATE USER 'root'@'%' IDENTIFIED BY 'YourStrongPasswordHere';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
警告:空密码极不安全,仅用于临时测试。生产环境必须设置强密码或使用专用用户。
若 'root'@'%'
已存在 :
修改密码:
sql
ALTER USER 'root'@'%' IDENTIFIED BY 'YourStrongPasswordHere';
FLUSH PRIVILEGES;
4.3 开放防火墙端口
若启用防火墙(如 UFW),允许 3306 端口:
bash
sudo ufw allow 3306/tcp
5. Windows 客户端验证连接
在 Windows 使用命令行或客户端(如 Navicat)测试连接:
cmd
mysql -h <Kali_IP> -P 3306 -u root -p

连接正常,成功进入!
6. 安全收尾
测试完成后,删除远程用户或设置强密码,并恢复本地监听:
6.1 撤销或更新远程用户
登录 MariaDB:
bash
sudo mariadb -u root -p
执行:
sql
-- 删除远程用户
DROP USER 'root'@'%';
-- 或设置强密码
ALTER USER 'root'@'%' IDENTIFIED BY 'YourStrongPasswordHere';
FLUSH PRIVILEGES;
6.2 恢复本地监听
编辑配置文件:
bash
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
将 bind-address
改回:
bind-address = 127.0.0.1
重启服务:
bash
sudo systemctl restart mariadb
7. 注意事项
-
安全性:
-
避免使用空密码或允许
root
远程登录。生产环境建议创建专用用户(如'remote_user'@'%'
):sqlCREATE USER 'remote_user'@'%' IDENTIFIED BY 'StrongPassword'; GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
-
远程
root
权限过高,仅在必要时使用。
-
-
网络:
- 确保 Kali 和 Windows 在同一网络内,无防火墙或网络策略阻拦 3306 端口。
- 测试连通性:
ping <Kali_IP>
或telnet <Kali_IP> 3306
。
-
错误排查:
- 查看 MariaDB 日志:
sudo tail -f /var/log/mysql/error.log
。 - 确认用户存在:
SELECT User, Host FROM mysql.user;
。 - 若报错
ERROR 1133 (28000)
,说明'root'@'%'
不存在,需用CREATE USER
创建。
- 查看 MariaDB 日志:
-
版本兼容性:
- MariaDB 10.4+ 推荐使用
CREATE USER
和ALTER USER
,避免GRANT ... IDENTIFIED BY
。 - 检查版本:
mariadb --version
。
- MariaDB 10.4+ 推荐使用