zoukankan      html  css  js  c++  java
  • mysql01-mysql基础知识

    1 mysql的安装:分为单实例和多实例

    2 mysql的权限

      常见的删库跑路是因为权限问题导致的,若是只赋予该账号一个某些权限,就可以避免;

      grant SELECT on mall.* TO 'dev'@'192.168.244.%' IDENTIFIED BY '123' WITH GRANT OPTION;
     
      再看一下权限是否赋予成功
      
      show grants for 'dev'@'192.168.244.%'
      
    3 mysql的用户标识
      用户+ip
    4 用户权限涉及到的表  
      mysql.user 一行数据代表一个用户,常见操作直接修改该表修改用户权限是不合法的
      mysql.db 一行数据代表对数据库的权限
      mysql.table_priv一行数据代表对表的权限
      column_priv 一行记录代表对某一列的权限
     
    5 mysql 权限颗粒可以作用到某一列
      比如下面这张表,对于dev用户之允许看id,name字段
      grant select(id,name) on mall.account to 'dev'@'192.168.244.%';
     
    插入数据后数据表如下

     

     需求是:只允许dev用户查询id,name列

    grant select(id,name) on mall.account to 'dev'@'192.168.244.%';
    此时查一下啊对应的表权限,列权限

    此时进行查询语句,分别是 select * 和 select id,name(授权字段) 看结果

     

      回收权限:REVOKE SELECT on mall.* from 'dev'@'192.168.244.%'

     6 mysql 角色的具体操作

      mysql 是基于 用户+ip 的授权模式;
         
      开启mysql的角色模式
     
      

     然后创建一个角色dev_role,在创建要给角色peer ,吧 peer 加入到 dev_role中,就实现了分组的概念,给dev_role查询权限,

    create USER 'dev_role'
    create USER 'deer'
    grant proxy on 'dev_role' to 'deer'
    grant select(id,name) on mall.account to 'dev_role'
    这里有个小的地方需要注意:如果你是远程链接,你可能会收获一个大大的错误,你没有权
    限做这一步,这个时候你需要再服务器上执行一条
    GRANT PROXY ON ''@'' TO 'root'@'%' WITH GRANT OPTION;
    测试一下,现在使用'deer'用户登陆系统试试
    select id ,name from mall.account
     
    这些角色权限存储在哪里?
     

     

    6mysql的数据类型

    int

    有无符号的

    演示 bigint
    create table test_unsigned(a int unsigned, b int unsigned);
    insert into test_unsigned values(1, 2);
    select b - a from test_unsigned;
    select a - b from test_unsigned; --运行出错
    无符号不可以小于0
     
    int(n)
    create table test_int_n(a int(4) zerofill);
    insert into test_int_n values(1);
    insert into test_int_n values(123456);
    int(N)中的 N 是显示宽度, 不表示 存储的数字的 长度 的上限。
     zerofill 表示当存储的数字 长度 < N 时,用 数字 0 填充左边,直至补满长度 N
    当存储数字的长度 超过 N 时 ,按照 实际存储 的数字显示
     
    create table test_auto_increment(a int auto_increment);//报错 提示必须是一个主键列才可以自动增长
    create table test_auto_increment(a int auto_increment primary key);

     面试题答案

    insert into test_auto_increment values(NULL);//1,在当前数字基础上加1
    insert into test_auto_increment values(0);//2 ,在当前数字上加1
    insert into test_auto_increment values(-1);//-1 可以直接插入
    insert into test_auto_increment values(null),(100),(null),(10),(null)//2 100 101 10 102

    字符类型

     时间类型

  • 相关阅读:
    第15届创新英语大赛初赛第二阶段题目
    13.递归第一次
    13.递归第一次
    13.递归第一次
    13.递归第一次
    Algs4-1.3.19给出一段代码,删除链表的尾结点
    Algs4-1.3.18下面链表在代码的作用
    Algs4-1.3.17从文件中读取信息生成Transaction对象数组
    Algs4-1.3.16从文件中读取日期生成日期对象数组
    Algs4-1.3.15打印Queue中倒数第k个元素的值
  • 原文地址:https://www.cnblogs.com/xiaoshahai/p/14033830.html
Copyright © 2011-2022 走看看