MYSQL数据库详解之DCL(mysql无密码破解密码等)和日志

DCL

一:主要用于授予或收回访问数据库的权限!权限级别主要有四个

1.  Global level :所有库,所有表的权限

2. Database level:某个数据库中的所有权限

3 .Table level:数据库中的某个表的权限

4. Column level:表中的某个字段的权限

二:MYSQL用户管理

1:创建用户:CREATE         USER          dabai@'localhost'        IDENTIFIED       BY      'QianFeng@123456';

  CREATE创建,关键字  USER 用户(关键字)‘localhost’   允许登录的主机,这里可以换成%等,%表示所有的主机都可以登录 user1用户名@分隔符(关键字) IDENTIFIED BY 身份认证(关键字)‘DaBai@123456’   用户密码   注意关键字不区分大小写,既可以大写也可以小写,但是关键字必不可少,不可以不写,否则就是语法错误。

create user dabai@'localhost' identified by 'DaBai@123456' #创建一个用户,用户名为user1,只允许本地登录,密码是DaBai@123456
FLUSH PRIVILEGES;   #刷新权限
select * from mysql.user;    #查看mysql.user用户表,查看刚刚创建的user1用户是否创建成功,由于内容太多,建议将内容复制下来,粘贴在记事本中看更方便

2:删除用户:

DROP USER 'dabai'@'localhost';  #删除用户dabai
select user from mysql.user;    #查询用户表中user字段的用户中是否还有dabai用户

3:修改用户密码,

mysql> set password=password('DaBai@123456'); #在mysql中修改密码,不需要原有密码
[root@localhost etc]# mysqladmin  -uroot -p'DaBai@123456' password 'DaBai@123' #在liunx中修改mysql用户密码,需要密码

丢失用户密码进行破解

①:修改mysql启动设置,vim /etc/my.cnf, 找到[mysqld]这一行,写入skip-grant-tables,意思是跳过权限表

②:重启mysql服务,[root@localhost etc]# systemctl restart mysqld,这时候就可以无密码登录mysql了

③:mysql> update mysql.user set authentication_string=password('DaBai@123456') where user='root' and host='localhost';

这个修改密码方式不需要用户原先密码,set password虽然也可以不要原先密码修改密码,但是开启skip-grant-tables之后就不能够使用了。

④:退出mysql,进入/etc/my.cnf把添加的skip-grant-tables注释掉,这样在登录就需要输入密码了,保证数据库的安全。

4:登录MySQL

mysql   -P 3306 -u root -p123 mysql -e ‘show tables’                 -h    指定主机名  [默认为localhost]

 -P MySQL服务器端口 [默认3306]大P  -u指定用户名,默认root -p指定登录密码 -e接sql语句

示例:免登陆查询数据库 mysql -uroot -p'DaBai@123456' -hlocalhost -P 3306 mysql -e 'show tables'

三:MYSQL权限

 grant 权限列表  on 库名.表名 to '用户名'@'允许访问的客户端主机范围'  [identified by '密码'  with option参数];

1:权限列表   all所有权限不包括授权权限 select,update,delete     查询,更新,删除权限,除此还有其他权限。

2:库名.表名   *.* 所有库下的所有表   web.*web库下的所有表   web.dabai   web库下的dabai表   SELECT (id), INSERT (name,age) 列权限,查找id列,插入name,age列。

with_option参数     with  GRANT OPTION 授权选项,使该用户具备给其他用户授权的权限,慎用

3:赋予权限

授权目标:授予admin3用户 对bbs库 所有的表,具有所有权限(不包含授权)GRANT all ON bbs.* TO dabai@'%' ;

这时候使用admin3用户就可以对bbs库下的所有表进行操作,如果没有bbs库就可以自己创建bbs库。:4:

4:查看权限

查看自己的权限:SHOW GRANTS;

查看别人的权限:SHOW GRANTS FOR 用户名@'允许访问的客户端主机范围';

5:回收权限

REVOKE 权限列表 ON 数据库名 FROM 用户名@‘允许访问的客户端主机范围’;

    REVOKE ALL PRIVILEGES  ON bbs.*  FROM dabai@’%’;                              //回收所有权限

日志

一、日志分类:

1 错误日志 :启动,停止,关闭失败报错。rpm安装日志位置 /var/log/mysqld.log

2 通用查询日志:所有的查询都记下来。

3 二进制日志:实现备份,增量备份。只记录改变数据,除了select都记。

4 中继日志:读取主服务器的binlog,在本地回放。保持一致。

5 slow log:慢查询日志,指导调优,定义某一个查询语句,定义超时时间,通过日志提供调优建议给开发人员。

6 DDL log: 定义语句的日志。

二、Error Log

进入主配置文件,观察日志是否启动:vim   /etc/my.cnf;log-error=/var/log/mysqld.log 该字段,标记是否启动日志,以及日志位置。如果哪天mysql服务起不来了,请来这个日志文件看看。

三、Binary Log

默认没有开启,二进制日志,启动二进制日志实在/etc/my.cnf中的[mysqld] 下面写入两行命令,log_bin添加该命令。指启动二进制日志,二进制日志开始记录。server-id=2 群集问题,必须指定该主机的序号。数字随意,保存在配置文件中的修改,重启mysqld

systemctl restart mysqld ;ls /var/lib/mysql/*bin*  查询二进制文件是否生成。mysqlbinlog -v /var/lib/mysql/localhost-bin.000001 查看二进制文件日志,二进制文件会进行日志轮转,自动切割,要查看最新的日志需要查看比000001数字大的二进制文件。

四、Slow Query Log

默认慢查询日志未开启,首先我们需要开启慢日志查询, vim   /etc/my.cnf;在[mysqld]下面写入两行命令,slow_query_log=1 启动慢查询日志  ;long_query_time=3   当SQL语句执行时间超过此数值时,就会被记录到日志中,建议设置为1或者更短。

systemctl  restart  mysqld 重启服务器  ;ll /var/lib/mysql/*slow*   查看慢查询日志文件

进入数据库,模拟慢查询:mysql>SELECT BENCHMARK(500000000,2*3);基本测试语句,测试一个超长时间的查询。

验证慢查询日志:tail /var/lib/mysql/localhost-slow.log 观察长查询日志记录,记录了刚才超长的查询结果。

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值