MariaDB 为什么不用密码,可以直接登入查看相关数据

MariaDB 为什么不用密码,可以直接登入查看相关数据

1.先排查是否有设置登录密码

mariadb
SELECT user,host,plugin FROM mysql.user;

非正常状态

2c3674fe-52f0-4a12-aebd-fa36807bebdc

正常状态

10ab26b7-3ae9-41ff-a368-61ec6e297877

那么需要先改超级管理员密码

sql
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的强密码';
FLUSH PRIVILEGES;

2.清理冗余账户

查看是否有针对特定数据库的权限

sql
SELECT * FROM mysql.db WHERE user IN ('mysql', '其他用户');

当发现mysql没有关联到数据库,则删除

sql
DROP USER IF EXISTS 'mysql'@'localhost';

3.快速验证是否安全且正常的健康状态

SELECT user, host, password,
CASE WHEN password = '' THEN '❌ 无密码'
WHEN password = 'invalid' THEN '❌ 密码无效'
ELSE '✅ 密码有效' END AS pwd_status
FROM mysql.user;

4.确认数据库是否对外暴露(最重要)

bash
ss -tulpn | grep 3306
image-20260812012035446

注意看截图中的红色部分 [::]:3306。这表示数据库(MariaDB/MySQL)目前正在监听所有 IPv6 的网络接口,在双栈网络环境下,这通常也意味着它会接受来自 IPv4 的连接请求。换句话说,数据库目前是暴露在服务器网络上的,存在被外网扫描和暴力破解的风险

4.1.修改数据库配置文件

打开 MariaDB 的配置文件。通常主配置文件会引入 /etc/my.cnf.d/ 目录下的配置,建议编辑子配置文件:

 bash
 vim /etc/my.cnf.d/server.cnf

在文件中找到 [mariadb][mysqld] 这一段落(如果没有,可以在最下方手动添加)。

在该段落下添加一行配置,强制其只绑定本地回环地址:

bind-address = 127.0.0.1

4.2.查看是否生效

修改配置文件后,必须重启服务才能生效:

bash
systemctl restart mariadb

成功的标志:输出结果应该变成 127.0.0.1:3306 或者直接消失(如果彻底禁用了 TCP 网络监听)。只要不再是 [::]:33060.0.0.0:3306,就说明外网暴露的问题已经彻底解决。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注