2019年5月
MySQL 随机获取表中的记录
准备测试用例
CREATE TABLE `tb_orders_10w` (
`order_id` bigint(20) NOT NULL COMMENT '订单自增id',
`order_no` bigint(20) NOT NULL COMMENT '外部订单号',
`uid` bigint(20) NOT NULL COMMENT '所属用户id',
`sender_name` varchar(64) DEFAULT '' COMMENT '发件人',
`sender_mobile` varchar(20) DEFAULT NULL COMMENT '发件人手机',
`sender_province` varchar(10) DEFAULT '' COMMENT '发件人省',
`sender_city` varchar(20) DEFAULT '' COMMENT '发件人市',
`sender_district` varchar(20) DEFAULT '' COMMENT '发件人区',
`sender_address` varchar(255) DEFAULT '' COMMENT '发件人详细地址',
`receiver_name` varchar(64) NOT NULL DEFAULT '' COMMENT '收件人名字',
`receiver_mobile` varchar(20) DEFAULT '' COMMENT '收件人手机',
`receiver_province` varchar(10) NOT NULL DEFAULT '' COMMENT '收件人省',
`receiver_city` varchar(20) NOT NULL DEFAULT '' COMMENT '收件人市',
`receiver_district` varchar(20) NOT NULL DEFAULT '' COMMENT '收件人区',
`receiver_address` varchar(255) NOT NULL DEFAULT '' COMMENT '收件人详细地址',
`status` tinyint(1) DEFAULT '0' COMMENT '订单状态:\r\n0未发货,1已取消,\r\n2已发货(有单号),3已完成(有单号)',
`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
`update_time` timestamp NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='测试表';
脚本插入10万条数据。
mysql> SELECT count(*) as cnt FROM tb_orders_10w;
+--------+
| cnt |
+--------+
| 100000 |
+--------+
1 row in set (0.03 sec)
mysql>
需求是要随机返回10个订单的 sender_name 。
MySQL 忘记密码时免密码登录模式
1. 停止服务
[root@iZuf6iv3q5dy5wx3gt2oxuZ ~]# service mysql stop
Shutting down MySQL.... [ OK ]
[root@iZuf6iv3q5dy5wx3gt2oxuZ ~]# ps aux|grep mysql
root 6496 0.0 0.0 103312 872 pts/1 S+ 17:28 0:00 grep mysql
2. 修改配置文件
vi /etc/my.cnf
搜索 [mysqld]
栏目下加入一行 skip-grant-tables
MySQL 查询过程
mysql查询过程
客户端发送一条sql给mysql服务器, 经历了连接器、查询缓存、解析器、预处理器、执行器,最后拿到结果返回给客户端。
下面是具体内容:(以下演示基于MySQL5.7.24)
MySQL8.0:Authentication plugin 'caching_sha2_password' cannot be loaded
背景
我使用以下命令在8.0版本MySQL来创建了一个新用户:
mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 8.0.11 |
+-----------+
1 row in set (0.01 sec)
mysql> CREATE USER yhy IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.17 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'yhy';
Query OK, 0 rows affected (0.08 sec)
系统提示我Query OK。