SQL3之DCL和日志

一、DCL语言

权限级别

  •  Global level

    所有库,所有表的权限。

  • Database level

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

  • Table level

    库中的某个表的权限

  • Column level

    表中的某个字段的权限。

mysql用户管理 

1、创建用户

create   user user1@'10.8.162.%'  identified  by   'weinihao123';
            //用户@ip网段, 若为localhost 则只有本机能访问
验证: 
select  * from  mysql.user\G;

注释:
    CREATE  创建(关键字)
    USER 用户(关键字)
    user1   用户名称(自定义)
    @ 分隔符(关键字)
    ‘localhost’   允许登录的主机
    IDENTIFIED BY 身份认证(关键字)
    ‘weinihao@123’   用户密码  

2、删除用户

drop   user  user1@'10.8.162.%';

3、修改用户密码

root修改自己密码

第一种:

[root@localhost ~]# mysqladmin -uroot -p'weinihao123'  password 'weinihao12'
                                       // 原密码                //新密码

第二种:

mysql> SET PASSWORD=password('weinihao123');
                         //新密码
mysql> rlush   privileges;//刷新权限

第三种:

mysql> update   mysql.user  set authentication_string=password('new_password') where user='root' and    host='localhost';
//使用这个命令的前提是有系统权限

丢失root用户密码

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

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

[root@localhost ~]# vim  /etc/my.cnf
[mysqld]
skip-grant-tables
//打开/etc/my.cnf文件在【mysqld】下面写上skip-grant-tables

重启mysql服务: 

systemctl  restart  mysqld 
[root@localhost ~]# mysql -uroot   //没有密码登录
mysql> update  mysql.user set authentication_string=password('weinihao123') where user='root' and host='localhost';  //修改自己的密码

修改mysql启动设置,注释掉跳过密码登录。

4、登录mysql

mysql  -uroot -p'weinihao123' -h'10.8.162.122'

        -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表

 eg:

 grant SELECT (id), INSERT (name,age) ON mydb.mytbl to 'user8'@'localhost' identified by 'weinihao@123'; 

==with_option参数
        GRANT OPTION
        授权选项

查看自己的权限

show  grants \G;

查看别人的权限

show  grants FOR 用户名@'%'\G;

去除权限:

revoke   权限列表   on  库名.表名   from  用户名@'客户端主机' 

二、日志

1、日志分类

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

2、Error log

vim  /etc/my.cnf  //进入主配置文件,观察日志是否启动
log-error=/var/log/mysqld.log //该字段,标记是否启动日志,以及日志位置。
cat /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
        //找到一个记录位置

4、Slow Query Log
    默认慢查询日志未开启
    开启慢查询日志功能

vim   /etc/my.cnf
// 加入下面2行配置
slow_query_log=1
//启动慢查询日志
//这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句。
long_query_time=3
//当SQL语句执行时间超过此数值时,就会被记录到日志中,建议设置为1或者更短。
systemctl  restart  mysqld
//重启服务器

  验证慢查询日志

 #tail /var/lib/mysql/localhost-slow.log 

 观察长查询日志记录,记录了刚才超长的查询结果。

猜你喜欢

转载自blog.csdn.net/yiweii/article/details/108262981