mysql------安全性问题

文章目录

  • 一, information_schema 数据库内容说明
  • 二. mysql.user表内容
  • 三,数据库安全问题
      • 1. 修改mysql密码
          • ☞way1 在shell里
          • ☞way2 修改mysql.user表中的数据
      • 2. mysql管理员root账号密码遗忘
          • ☞way1 杀死进程,绕过grant权限表,实现无口令登录后修改密码
          • ☞way2 修改配置文件,添加skip-grant-tables ,实现无口令登录后修改密码
      • 3. 添加数据库用户
          • ☞way1在mysql.user中添加数据
          • ☞way2 用CREATE USER语句添加
      • 3.用户授权(增删查改)、
          • ①新用户授权(不存在的用户):
          • ②老用户授权:
          • ③查看用户权限
          • ④撤销权限
      • 4.网络连接权限
          • 远程连接mysql命令

一, information_schema 数据库内容说明

information_schema 数据库:mysql 5.0以上版本所有
作用:放架构信息,是一个“字典”(存放各个用户的权限,每个数据库的内容)

  • SQL注入时会经常对这个数据库操作 —>通过SQL语句可以获知后台系统有那些表,库,内容

【例如】如果网站有SQL注入的漏洞—>通过sql查询一个管理员用户 —>上传php木马---->反弹shell

  • 一般后端会过滤不显示SQL查询结果

内容

  • mysql------安全性问题_第1张图片

二. mysql.user表内容

该表存放了数据库的用户信息,如user host password等信息

【【【【mysql.usr    存放登录mysql用户的信息-->sql注入的目标】】】
			1.user字段为空的,删了就好
			2.host有
							允许本机登录:localhost
							允许域登录:localdomain
							IP:127.0.0.1   | 允许的IP
  • mysql------安全性问题_第2张图片
  • mysql------安全性问题_第3张图片

该表还储存了用户的权限说明

  • mysql------安全性问题_第4张图片

三,数据库安全问题

1. 修改mysql密码

默认空密码【即只允许本机登录】 -->需要网络连接 --> 修改管理员密码

☞way1 在shell里

mysqladmin -u root -p password “密码”

设置完储存在 mysql.user表中为加密后的数据

  • mysql------安全性问题_第5张图片
☞way2 修改mysql.user表中的数据

update mysql.user set password=password(‘新密码’) where user=‘指定用户’ and host=‘指定主机类型’;

password=password(‘密码’)
      第一个password是修改密码列
      ?第二个password是对修改的密码进行加密处理的函数,若不带,则以明文的形式储存在user表中!!       
  • mysql------安全性问题_第6张图片

修改完更新数据库的权限表 FLUSH PRIVILEGES;

2. mysql管理员root账号密码遗忘

☞way1 杀死进程,绕过grant权限表,实现无口令登录后修改密码
  • ①杀掉进程

在shenll中 killall -TERM mysqld

  • ②增加一个后台,绕过grant权限表

mysqld_safe --skip-grant-tables &
这条命令要在本机或者远程登录(ssh)才能执行在这里插入图片描述

  • ③可以无口令登录

    mysql------安全性问题_第7张图片

  • ④修改user表密码数据, 刷新数据 , 退出数据库并重启mysqld服务


☞way2 修改配置文件,添加skip-grant-tables ,实现无口令登录后修改密码
  • ①修改配置文件

mysql------安全性问题_第8张图片

  • ②重启mysqld服务
  • ②实现无口令登录,修改user表password数据,刷新数据,退出数据库

mysql------安全性问题_第9张图片

  • ④删掉跳过grant权限表那一行,重启mysqld服务

3. 添加数据库用户

☞way1在mysql.user中添加数据
  • 在这里插入图片描述

??这样赋予权限,权限很大,对所有库,表都可操作【没有指定库,表】

☞way2 用CREATE USER语句添加

CREATE USER ‘用户名’@‘host内容’ IDENTIFIED BY ‘设置登录密码’;

  • mysql------安全性问题_第10张图片

3.用户授权(增删查改)、

①新用户授权(不存在的用户):

mysql> GRANT 权限列表 ON 库或表 TO ‘用户名’@‘登录IP或域名’ IDENTIFIED BY ‘设置登录密码’;

权限列表:
    	all——所有权限
       select,insert,update,drop,delete,create等
库或表:
		*.*——所有库,所有表	
登录IP或域名:
		%——表示没有限制,在任何主机都可以登录
		192.168.120.%——表示在192.168.120.0网段可以登录
②老用户授权:

mysql> GRANT 权限列表 ON 库或表 TO ‘用户名’@‘登录IP或域名’;

③查看用户权限

SHOW GRANTS FOR ‘用户名’@‘登录IP或域名’;

  • mysql------安全性问题_第11张图片
④撤销权限

REVOKE 权限列表 ON 库.表 FROM ‘用户’@‘登录IP或域名’;

???这里的用户必须存在
  • mysql------安全性问题_第12张图片

4.网络连接权限

作为web部署框架的后端数据库,在网络连接方面尤为重要。

  • mysql------安全性问题_第13张图片
远程连接mysql命令

mysql -h 指定要连接的IP -P 指定的端口 -u 有远端登录的用户名 -p登录口令

默认端口为3306

  • mysql------安全性问题_第14张图片

你可能感兴趣的:(mysql,mysql安全问题)