MariaDB 为什么不用密码,可以直接登入查看相关数据
1.先排查是否有设置登录密码
mariadb
SELECT user,host,plugin FROM mysql.user;
非正常状态

正常状态

那么需要先改超级管理员密码
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

注意看截图中的红色部分 [::]: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 网络监听)。只要不再是 [::]:3306 或 0.0.0.0:3306,就说明外网暴露的问题已经彻底解决。