zoukankan      html  css  js  c++  java
  • mysql事务索引和权限管理

    pysql:

     sql注入:太相信用户输入的所有的数据。

        解决方法:1.自己手动去判断转义用户输入的数据2.不要拼接SQL语句,使用PyMySQL 的execute方法,防止SQL的注入。

    事务:一组操作,要么都成功要么都失败

      四大特性:

        1.原子性:原子是最小的粒度,所以说一组操作要么都 成功要么都失败

        2.一致性:无论事务前还是事务后,数据的总额不变。

        3.隔离型:事务与事务之间是隔离的,一个事务内的操作,另一个事务是不可见的

        4.持久性:一个事务结束后,其影响应该保留下来,不可修改,只能通过补偿事务来弥补之前的错误

    开启:start transaction

    结束: commit

    回滚:rollback

    但如果在事务内删除了一个表(drop table 表名)那么回滚就不能返回这个表了,其他数据库都一样,但除了oracle(flashback)

    存储引擎:

    create table t1(id int auto_increment primary key, name varchar(16) not null default '')engine=Innodb charset=utf8;

    上面创建表的engine=Innodb 就是引擎

    引擎的分类:

      Inodb:

        1.5.5(含5.5)版本默认就是Innodb

        2.支持事务

        3.支持全文索引

        4.索引和数据都是在同一个文件中,叫.ibd,表的结构在.frm文件中

      MyIsam:

        1.5.5(不含5.5)以下版本默认MyIsam

        2.不支持事务

        3.支持全文索引

        4.表结构:.frm   表数据:.MYD  表索引: .MYI

    全文索引:sphinx

    索引:

    作用:加快查询的速度

    类比:新华字典的目录,可以将索引理解成一个特殊的文件,然后如果没有这个文件的话,查询是从前到后查找数据的,如果有这个文件的话,会按照一种特殊的数据结构(二叉树)查找数据。

    分类:主键索引:加快查询速度,不能重复,不能为空。primary  key

         唯一索引:加快查询速度,不能重复,可以为空。unique(列名)

         联合唯一索引:加快查询速度 ,不能重复,可以为空 unique(列名1,列名2)

    ,普通索引:加快查询   index(列名)

    创建:

    主键索引:

      第一种:

        create table t1(id int auto_increment primary key, name varchar(16) not null default '')engine=Innodb charset=utf8;

      第二种:

        alter table t1 change id id int  auto_increment primary key;

    唯一索引:

      第一种:

        create table t1(id int auto_increment primary key, name varchar(16) not null default '',unique 别名(列名))engine=Innodb charset=utf8;

      第二种:

        create unique index 索引名称(ix_name) on 表名(t1)(列名)

        create unique index 索引名称(ix_name_age) 表名(t1)(name,age)

    普通索引:

      第一种:

        create table t1(id int auto_increment primary key, name varchar(16) not null default '',index ix_name(列名))engine=Innodb charset=utf8;

      第二种:

        create index 索引名称(ix_name) on 表名(t1)(列名)

      删除:

        drop 索引名称(ix_name) on表名(t1);

    场景:使用频繁的列上加一个索引

    索引的缺点:版本5.3以下:删除和修改的速度就变慢了。版本5.5以上:删除和修改的速度不是特别的慢

    索引的使用:

      explain 工具

      查看sql语句是否用得上索引,或者查看sql执行效率的工具

      给执行的sql语句出报告,通过此报告来判断sql语句的执行效率和效果

      ES(elasticsearch)

      sql语句的规则:

          不建议使用like进行搜索

          组合索引最左前缀

          如果组合索引为:(name,email)

             where name and email -- 使用索引

          where name -- 使用索引

          where email -- 不使用索引

    慢日志(slow log):

    日志文件: 记录了执行速度特别慢的SQL语句

    开启的步骤:
    1. show variables like '%query%';

    2. set global long_query_time = 1; 设置慢查询的时间
    3. slow_query_log = ON
    4. slow_query_log_file = E:programmysql-5.6.44-winx64dataoldboy-slow.log

    普通日志记录(general log):

    SQL审计 (记录sql的操作语句)

    show variables like '%general%';
    +------------------+------------------------------------------------+
    | Variable_name | Value |
    +------------------+------------------------------------------------+
    | general_log | ON |
    | general_log_file | E:programmysql-5.6.44-winx64dataoldboy.log |
    +------------------+------------------------------------------------+
    set global general_log = ON;

    权限管理:

    创建用户:

    create user '用户名'@'IP地址' identified by '密码';
    creaee user 'zekai'@'192.168.1.123' identified by '123qwe';
    creaee user 'zekai'@'192.168.1.%' identified by '123qwe';
    create user 'zekai'@'%' identified by '123qwe';

    删除用户
    drop user '用户名'@'IP地址';
    修改用户
    rename user '用户名'@'IP地址' to '新用户名'@'IP地址';

    修改密码
    set password for '用户名'@'IP地址' = Password('新密码')

    授权:
    grant 权限 on 数据库.表 to '用户'@'IP地址' -- 授权

    grant select on db1.* to 'zekai'@'%';
    grant select on *.* to 'zekai'@'%';
    grant select, insert, delete on db1.* to 'zekai'@'%';

    记住:
    flush privileges;


      

        

        

  • 相关阅读:
    通过JavaMail发送(群发)邮件示例(内含附件图片) 代码复制可用
    需要把获取系统的当前时间存入库里 获取时是String类型,库里是Datetime类型 String 转化 Date
    用canvas和原生js写的一个笨鸟先飞的小游戏(暂时只有一个关卡)
    Svg和canvas的区别,伪类选择器有哪些(归类)
    微信web网页动态增减输入框,搜索框,基于jQuery weui、jQuery 实现无限插入数据,动态数据生成,外加高德地图POI和根据坐标获取位置信息的页面
    vue 使用tinymce富文本编辑器
    mamp环境下navicat无法链接本地mysql
    tp5 系统变量输出
    开始项目注意事项
    jQuery weui实现下拉刷新事件
  • 原文地址:https://www.cnblogs.com/xinfan1/p/11040949.html
Copyright © 2011-2022 走看看