如何同步 GRANT/REVOKE 操作
发现在 MySQL master 上用 GRANT 语句授予用户权限和用 REVOKE 语句收回权限的操作没有被同步到 slave 上,有两个 bug 报告的行为和我遇到的一致: #25482 #50460,但从文档看,#25482 描述的是 bug,而 #50460 描述的内容则是 MySQL 的预期行为。
发现在 MySQL master 上用 GRANT 语句授予用户权限和用 REVOKE 语句收回权限的操作没有被同步到 slave 上,有两个 bug 报告的行为和我遇到的一致: #25482 #50460,但从文档看,#25482 描述的是 bug,而 #50460 描述的内容则是 MySQL 的预期行为。
这周遇到了三个值得说一说的问题,每一个问题都带来了不小的麻烦,作为教训再来回顾一下。
在给 MySQL 数据库访问层增加新功能时遇到了这样的错误:
ProgrammingError: (2014, "Commands out of sync; you can't run this command now")
之前零星地见到过几次,因为发生频度很低,就没有太在意,这次找了一下原因,MySQL 文档对 Commands out of sync 错误的描述是这样的:
遇到了几例 MySQL 没用使用预期索引的问题,读了些文档之后,发现 MySQL 的类型转换对索引选择的影响还真是一个不大不小的坑。
比如有这样一张 MySQL 表:
CREATE TABLE `indextest` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(10) DEFAULT NULL,
`age` tinyint(3) unsigned NOT NULL DEFAULT '0',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_name` (`name`),
KEY `idx_age` (`age`),
KEY `idx_create` (`create_time`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1