• way
    2019-02-20
    写个比较小的点:在命令行查询数据需要行转列的时候习惯加个\G ; 比如slave slave stauts \G ; 后来发现 ; 是多余的。列几个常用的
    \G 行转列并发送给 mysql server
    \g 等同于 ;
    \! 执行系统命令
    \q exit
    \c 清除当前SQL(不执行)
    \s mysql status 信息
    其他参考 \h
    展开

    作者回复: 👍

    我最开始使用MySQL的时候,就是不自然的在\G后面加分号
    而且还看到报错,好紧张😆

     1
     13
  • undifined
    2019-02-18
    权限的作用范围和修改策略总结:
    http://ww1.sinaimg.cn/large/d1885ed1ly1g0ab2twmjaj21gs0js78u.jpg

    作者回复: 👍,优秀

     1
     12
  • 发芽的紫菜
    2019-02-18
    老师,联合索引的数据结构是怎么样的?到底是怎么存的?看了前面索引两章,还是不太懂,留言里老师说会在后面章节会讲到,但我也没看到,所以来此问一下?老师能否画图讲解一下

    作者回复: 联合索引就是两个字段拼起来作索引

    比如一个索引如果定义为(f1,f2),
    在数据上,就是f1的值之后跟着f2的值。
    查找的时候,比如执行 where f1=M and f2=N, 也是把M,N拼起来,去索引树查找

    
     7
  • 夜空中最亮的星(华仔...
    2019-02-18
    通过老师的讲解 flush privileges 这回彻底懂了,高兴😃

    作者回复: 👍

     1
     5
  • Leon📷
    2019-02-18
    老师我使用delte删除用户,再创建用户都是失败,但是使用drop就可以了
    mysql> create user 'ua'@'%' identified by 'L1234567890c-';
    ERROR 1396 (HY000): Operation CREATE USER failed for 'ua'@'%'
    mysql> drop user 'ua'@'%';
    Query OK, 0 rows affected (0.00 sec)

    mysql> create user 'ua'@'%' identified by 'L1234567890c-';
    Query OK, 0 rows affected (0.01 sec)
    是不是drop才会同时从内存和磁盘删除用户信息,但是delete只是从磁盘删除
    展开

    作者回复: 对,drop是同时操作磁盘和内存,
    delete就是我们说的不规范操作

    
     5
  • XD
    2019-02-18
    老师,我刚说的是acl_db,是在db切换的时候,从acl_dbs拷贝到线程内部的?类似acl_user。

    session a
    drop user 'test'@'%';
    create user 'test'@'%' identified by '123456';
    grant SELECT,UPDATE on gt.* to 'test'@'%';

    session b 使用test登录
    use gt;

    session a
    revoke SELECT,UPDATE on gt.* from 'test'@'%';

    session b
    show databases; //只能看到information_schema库
    use gt; // Access denied for user 'test'@'%' to database 'gt'
    show tables; //可以看到gt库中所有的表
    select/update //操作都正常
    展开

    作者回复: 你说的对,我刚翻代码确认了下,确实是特别对“当前db”有一个放过的逻辑。

    多谢指正。我勘误下。

    
     4
  • 业余草
    2019-06-27
    从学习中来,到实战中去!做了一个总结,可能写的不对,希望老师指点。https://mp.weixin.qq.com/s/7KGQGpm0IGaVjco6UjLeAQ

    作者回复: 认真看了这篇文章,我有点疑惑哦

    “这招够狠。重启在程序员届的杀招被他接上了。但是,重启失灵了,重启后,已有的连接还是没权限。具体的表现是,备库上的复制连接还是未权限。”
    主库重启的话,备库的连接也是重新创建的

    如果“重启无效”而“kill连接有效”,那不太合理哦

    
     3
  • 旭东
    2019-02-18
    老师请教一个问题:MySQL 表设计时列表顺序对MySQL性能的影响大吗?对表的列顺序有什么建议吗?

    作者回复: 没有影响

    建议就是每次如果要加列都加到最后一列😆

    
     3
  • Sinyo
    2019-02-18
    查一张大表,order_key字段值对应的最小createtime;
    以前一直用方法一查数,后来同事说可以优化成方法二,查询效率比方法一高了几倍;
    mysql特有的group by功能,没有group by的字段默认取查到的第一条记录;

    方法一:
    select distinct order_key
          ,createtime
      from (select order_key
                  ,min(createtime) createtime
              from aaa
             group by order_key) a
      join aaa b
        on a.order_key = b.order_key
       and a.createtime = b.createtime

    方法二:
    select order_key
          ,createtime
      from (select order_key
                  ,createtime
              FROM aaa
             order by createtime
           ) a
     group by order_key
    展开

    作者回复: 👍


    这第二个写法跟:
    select order_key ,createtime FROM aaa force index(createtime) group by order_key
     的逻辑语义相同吗?

    
     3
  • 夹心面包
    2019-02-18
    我在此分享一个授权库的小技巧, 如果需要授权多个库,库名还有规律,比如 db_201701 db_201702
    可以采用正则匹配写一条 grant on db______,每一个_代表一个字符.这样避免了多次授权,简化了过程。我们线上已经采用

    作者回复: 是的,MySQL还支持 % 赋权,%表示匹配任意字符串,
    比如
    grant all privileges on `db%`.* to ... 表示所有以db为前缀的库。

    不过。。。我比较不建议这么用😅

    
     2
  • godtrue
    2019-08-09
    这篇容易消化,老师辛苦,你不讲这个,我想我很难发现这个细节,业务开发增删改查用的多,其他命令平时不咋用。
    多玩才能发现更多好玩的,如果能有几个老师这样的朋友一起玩,那该有多好玩。

    作者回复: 👍

    
     1
  • 虢國技醬
    2019-07-18
    老师的文章信息量(密度)很大,一般情况下得读好几遍,甚至读到头大;本篇是少有的几篇一口气读完能理解的,不容易啊 😂
    
     1
  • 冰点18
    2019-04-10
    两三个月的时间,终于在上班地铁上读完了整部专栏,老师辛苦了!接下来就是搭建环境,二刷和验证了!一直有个问题,想问下老师,您用的画图工具是哪个?风格我特别喜欢,但是没找到

    作者回复: ipad 上的pencil ,是编辑小姐姐画的哈,我画的是矩形的图😅

    
     1
  • 萤火虫
    2019-02-20
    坚持到最后 为老师打call

    作者回复: 👍
    是真爱

    
     1
  • 舜
    2019-02-19
    老师,介绍完了order by后能不能继续介绍下group by的原理?等了好久了,一直想继续在order by基础上理解下group by,在使用过程中两者在索引利用上很相近,性能考虑也类似

    作者回复: 37篇讲了group by的,你看下

    还有问再提出来😆

    
     1
  • 爸爸回来了
    2019-02-18
    众所周知,sql是不区分大小写的。然而,涉及插件的变量却不是这样;上次在配置一个插件的参数的时候,苦思良久……最后发现了这个问题。难受😭

    作者回复: 😆你说的是参数的名字,还是参数的值?

    
     1
  • AlphaLiu
    2019-11-06
    在生产库进行全量备份:
    mysqldump -uroot -p654321 --all-databases > alldatabases.sql
    在本地库恢复:
    mysql -uroot -p123456 < alldatabases.sql
    恢复后,还是能使用mysql -uroot -p123456登录,
    而mysql -uroot -p654321,不能登录。
    必须flush privileges或者systemctl restart mysqld.service后,
    恢复后的root密码才能生效。
    请教下老师,这是什么原因?
    展开
    
    
  • 竹篮打水
    2019-07-10
    全局权限、对于一个已经存在的连接,它的全局权限不受 grant 命令的影响。那如果我要更新已建立连接的权限、怎么办、难道必须重新建立连接才能生效吗?
    
    
  • William
    2019-07-10
    从文中了解到, flush privileges 实际上就是保证磁盘与内存的数据一致性.
    如果一致,那么无需执行(执行了也没关系, 但是属于画蛇添足),
    但是不一致, 就需要执行..


    全局的权限修改, 不影响当前已有线程, 新线程建立采用新的权限.
    而对于db 表 列 的 权限 操作, 实时生效.
    展开
    
    
  • wljs
    2019-02-19
    老师我想问个问题 我们公司一个订单表有110个字段 想拆分成两个表 第一个表放经常查的字段 第二个表放不常查的 现在程序端不想改sql,数据库端来实现 当查询字段中 第一个表不存在 就去关联第二个表查出数据 db能实现不?
    
    
我们在线,来聊聊吧