MySQL数据库SQL3—DCL权限,日志

权限级别

1.  Global level   所有库,所有表的权限。
2. Database level  某个数据库中的所有表的权限。
3. Table level      库中的某个表的权限
4.  Column level   表中的某个字段,的权限。

mysql用户管理

  1. 创建用户
CREATE  USER    user1@'localhost'  IDENTIFIED       BY  'QianFeng@123456';

在这里插入图片描述
2. 删除用户

DROP USER 'user1'@'localhost';

操作示例

select * from mysql.user\G;
drop user 'user1'@'localhost';
select * from mysql.user\G;
  1. 修改用户密码
    root修改自己密码

示例1

mysqladmin      -uroot      -p'123'         password       'new_password'

前提是拥有系统权限

update也可以哦。不过比较复杂

 UPDATE mysql.user  SET authentication_string=password(‘new_password’)  WHERE user=’root’ AND host=’localhost’;
FLUSH PRIVILEGES;

示例2

SET PASSWORD=password('new_password');
FLUSH PRIVILEGES;

丢失root用户密码

1.前言

当root用户,忘记了密码。可以使用破解的方式来登录系统。修改密码。

原理:使系统在启动时,不加载密码文件。

2.修改mysql启动设置

vim /etc/my.cnf

[mysqld]
skip-grant-tables

3.重启mysql,无密码登录

重启mysql程序      # systemctl    restart   mysqld
无密码登录       # mysql -uroot

修改自己的密码

mysql>UPDATE mysql.user SET authentication_string=password('Fr@123456789')  where  user='root'  and  host='localhost';
mysql> FLUSH PRIVILEGES;

4.修改mysql启动设置

注释掉跳过密码
  1. 登录MySQL
mysql   -P 3306 -u root -p123 mysql -e ‘show tables’

-h 指定主机名 【默认为localhost】
-P MySQL服务器端口 【默认3306】 大P
-u 指定用户名 【默认root】
-p 指定登录密码 【默认为空密码】
此处mysql为指定登录的数据库
-e 接SQL语句

示例

免登录查询数据库

mysql -uroot -p'QianFeng@123' -hlocalhost -P 3306 mysql -e 'show tables'

mysql权限原理

语法格式
grant 权限列表 on 库名.表名 to ‘用户名’@‘客户端主机’ [identified by ‘密码’ with option参数];

 ==权限列表
 all: 所有权限(不包括授权权限)
 select,update	 查询更新
==数据库.表名
*.*     所有库下的所有表
web.*  web库下的所有表
web.stu_info    web库下的stu_info表
grant SELECT (id), INSERT (name,age) ON mydb.mytbl to 'user8'@'localhost' identified by 'Fr@123'; 
==客户端主机
 %   所有主机
 192.168.2.%		    192.168.2.0网段的所有主机
 192.168.2.168		    指定主机
 localhost                指定主机
==with_option参数
    GRANT OPTION   授权选项

mysql权限示例

赋予权限
授权目标
授予admin3 对bbs库 所有的表,具有所有权限(不包含授权)

GRANT ALL ON bbs.* TO admin3@'%' IDENTIFIED BY 'FR@1316466800';

赋权示例
1.准备测试账户
root账户创建

CREATE USER admin3@'%' IDENTIFIED BY 'Fr@123';

2.授权账户
root账户授权

GRANT ALL ON bbs.* TO admin3@'%' IDENTIFIED BY 'Fr@1316466800';

3.使用测试账户操作数据库

[root@localhost ~]# mysql -uadmin3 -p'Fr@123'
mysql> create database bbs;

试试创建别的库

mysql> create database bba;
ERROR 1044 (42000): Access denied for user 'admin3'@'%' to database 'bba'

进入bbs库,创建数据表和插入数据。
授权验证完毕

回收权限

查看权限
查看自己的权限

SHOW GRANTS\G

查看别人的权限

SHOW GRANTS FOR admin3@'%'\G

回收权限REVOKE

语法

REVOKE 权限列表 ON 数据库名 FROM 用户名@‘客户端主机’

示例:

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

删除用户的版本问题

5.6之前,先   revoke all privilege        再  drop user
5.7之后,直接	drop user

日志

一、日志分类

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

默认没有开启,二进制日志
启动二进制日志
vim   /etc/my.cnf
log_bin  添加该字段。指启动二进制日志
server-id=2  群集问题,必须指定该主机的序号。数字随意
#systemctl restart mysqld   重启数据库

测试

1 查看二进制日志文件当前状态

ls /var/lib/mysql/*bin*  查询二进制文件生成完成。

查看二进制文件日志

mysqlbinlog -v /var/lib/mysql/localhost-bin.000001

找到一个记录位置

#at 123

2 进入数据库,进行数据操作

创库,创表,创数据(过程略)

3 完成二进制日志启动,查询测试

找到刚才创建的记录即可。

mysqlbinlog -v /var/lib/mysql/localhost-bin.000001 

四、Slow Query Log

默认慢查询日志未开启
开启慢查询日志功能

vim   /etc/my.cnf

加入下面2行配置

 slow_query_log=1

启动慢查询日志
这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句。

 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 

观察长查询日志记录,记录了刚才超长的查询结果。
稍后反馈给开发部,进行优化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值