数据库MySQL(三)DCL语句 数据库控制语言(控制用户的访问权限GRANT、REMOVE)

目录

一、DCL

1.权限级别

2.MySQL用户管理

3.MySQL权限管理

4.MySQL权限示例

二、日志

1.日志分类

2.Erro Log

3.Binary Log

4.Slow Query Log


一、DCL

1.权限级别

Global Level 所有库,所有表的权限

Database Level 某个数据库中的所有表的权限

Table Level 库中的某个表的权限

Column Level 表中的某个字段的权限

2.MySQL用户管理

创建用户

mysql> create user user1 @'localhost' identified by 'Qian@1234';
Query OK, 0 rows affected (0.02 sec)

create 创建(关键字)
user 用户(关键字)
user1 用户名称(自定义)
@ 分隔符(关键字)
'localhost' 允许登录的主机
identified by 身份认证(关键字)
'Qian@1234' 用户密码

删除用户

mysql> drop user 'user1'@'localhost';

修改用户密码

  • root修改自己的密码

        方法一:在数据库外修改密码

前面是旧密码,后面是新密码
[root@localhost ~]# mysqladmin -uroot -p'Qian@123' password 'Qian@12345'

        方法二:在数据库内修改密码

//新建用户设置密码
mysql> create user root@'localhost' identified by '密码';

//已有用户修改密码
mysql> alter user root@'localhost' identified by '密码';

//在mysql数据库里的user表中,改自己的密码
mysql> set password = password ('新密码');

//修改其他用户的密码
mysql> set password for '用户名'@'localhost或者%' =password('密码');


//刷新权限
mysql> flush privileges;
  • 丢失root用户密码

        当root用户忘记了密码,可以使用破解的方式来登录系统,修改密码,式系统在启动时,不加载密码文件。

//修改MySQL启动设置
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
skip-grant-tables

[root@localhost ~]# systemctl restart mysqld    //重启MySQL
[root@localhost ~]#mysql -uroot    //无密码登录
//更新用户密码
mysql> update MySQL.user set authentication_string=password('密码') where user='root';
//刷新权限
mysql> flush privileges;

//修改MySQL启动设置,注释掉skip-grant-tables

登录MySQL

[root@localhost ~]# mysql -P 3306 -uroot -p'Qian@12345' mysql -e 'show tables';
-P mysql服务器端口 [默认3306]
-u 指定用户名 [默认root]
-p 指定登录密码 [默认为空密码]
此处MySQL为指定登录的数据库
-e 接SQL语句

3.MySQL权限管理

语法格式:

grant 权限列表 on 库名.表名 to '用户名'@'客户端主机' [identified by '密码' with optior参数];

  • 权限列表

        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 'QianFeng@123';

  • 客户端主机

        localhost 主机名

  • with_option参数

        GRANT OPTION 授权选项

4.MySQL权限示例

赋予权限

  • 授权目标

例:授予admin3对bbs库所有的表,具有所有的权限(不包含授权)

mysql> GRANT ALL ON bbs.* TO admin3@'localhost' identified by 'QianFeng@123';
mysql> select user,host from mysql.user;
  • 赋权示例
//准备测试帐号
mysql> CREATE USER admin3@'%' identified by 'Qian@123';
//授权帐号
mysql> CREATE ALL ON bbs.* TO  admin3@'%' identified by 'Qian@123';
//使用测试账户操作数据库
[root@localhost ~]# mysql -uadmin3 -p'Qian@123'
mysql> crate database bbs;
进入bbs库,创建数据表和插入数据,授权验证完毕,别的库会报错

回收权限

  • 查看权限
//查看自己的权限
mysql> show grants\G;
//查看别人的权限
mysql> show grants for admin3@'%'\G;
  • 回收权限REVOKE

        语法:  REVOKE 权限列表 ON 数据库名 FROM 用户名@'客户端主机'

        示例:REVOKE ALL PRIVIEGES ON bbs.* FROM admin3@'%';//回收所有权限

  • 删除用户的版本问题

        5.6之前,先REVOKE ALL PRIVILEGE  再DROP USER

        5.7之后,直接DROP USER

二、日志

1.日志分类

  • 错误日志:启动,停止,关闭失败报错。rpm安装日志位置/var/log/mysqld.log
  • 通用查询日志:所有的查询都记下来
  • 二进制日志:实现备份,增量备份。只记录改变数据,除了select都记
  • 中继日志:读取主服务器的binlog,在本地回放。保持一致
  • slow log:慢查询日志,指导调优,定义某一个查询语句,定义超时时间,通过日志提供调优建议给开发人员
  • DDL log:定义语句的日志

2.Erro Log

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

3.Binary Log

默认没有开启,二进制日志

启动二进制日志

vim /etc/my.cnf
log_bin    //添加该字段,指启动二进制日志
server-id=2    //集群问题,必须指定该主机的序号,数字随意

systemctl restart mysqld    //重启数据库

测试

//查看二进制日志文件当前状态
ls /var/lib/mysql/*bin*    //查询二进制文件生成完成
mysqlbinlog -v /var/lib/mysql/localhost-bin.000001    //查看二进制文件日志
at 123    //找到一个记录位置

进入数据库,进行数据操作,创库,创表,创数据
完成二进制日志启动,查询测试
mysqlbinlog -v /var/lib/mysql/localhost-bin.000001    //找到刚才创建的记录即可

4.Slow Query Log

默认慢查询日志未开启

//开启慢查询日志功能
vim /etc/my.cnf
加入下面两行配置
slow_query_log=1
log_query_time=3

systemctl restart mysqld    //重启数据库

//查看慢查询日志文件
ll /var/lib/mysql/*slow*    //查看日志文件已经生成

//模拟慢查询
mysql> select benchmark(500000000,2*3); //基本测试语句,测试一个超长时间的查询
//验证慢查询日志
tail /var/lib/mysql/localhost-slow.log //管擦和长查询日志,记录了刚才超长的查询结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值