[数据库]MYSQL之授予/查验binlog权限
- 在后端做主从备份;亦或是在大数据领域中,各类CDC同步(
Canal
/Flink CDC
等),均会基于MYSQL
的binlog
来实现。 - 因此,知道需要哪些权限?怎么查验去、怎么授权就很重要了。
感觉网上的文章没成体系地清楚,而今天工作上处理问题的过程中遇到了此疑问,且曾多次对此产生疑问,自然便有了这一篇,作为个人的Momo备忘笔记~
- 不知道什么是数据领域的
CDC
的朋友,可参见我刚参加工作,并进入大数据领域时的这篇科普文章~
1 MYSQL的binlog特性,需要用户具备哪些权限?
MySQL Binlog权限需要3个权限 :
SELECT
- 缺乏SELECT权限时,报错为
- com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Access denied for user 'canal'@'%' to database 'binlog'
- 缺乏REPLICATION SLAVE权限时,报错为
- java.io.IOException: Error When doing Register slave:ErrorPacket [errorNumber=1045, fieldCount=-1, message=Access denied for user 'canal'@'%'
- 缺乏REPLICATION CLIENT权限时,报错为
- com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Access denied; you need (at least one of) the SUPER, REPLICATION CLIENT privilege(s) for this operation
- 缺乏SELECT权限时,报错为
REPLICATION SLAVE
REPLICATION CLIENT
Binlog为什么需要这些权限?
Select
权限代表允许从表中查看数据Replication client
权限代表允许执行show master status,show slave status,show binary logs
命令Replication slave
权限代表允许slave主机通过此用户连接master以便建立主从 复制关系
1 查验:查验指定用户是否具有指定库/指定表的binlog权限
- Step1 Check binlog status of mysql database server
-- https://github.com/alibaba/canal/wiki/AdminGuide
show variables like 'log_bin';
show variables like 'binlog_format';
- Step2 查验指定用户是否具有指定库/指定表的binlog权限
SHOW GRANTS FOR '{userName}'@'%';
由图可见,这显然说明了该用户对图中这个库有binlog权限。
3 授予权限
GRANT
SELECT
, REPLICATION SLAVE
, REPLICATION CLIENT
ON *.*
TO '{username}'@'%' IDENTIFIED BY '{password}'; -- % 可替换为 指定的 host
X 参考与推荐文献
- [大数据]ETL之增量数据抽取(CDC) - 博客园/千千寰宇
- [数据库]MySQL之数据库管理篇 - 博客园/千千寰宇 【推荐】
- [数据库]MySQL之SQL查询 - 博客园/千千寰宇
- MySQL Binlog 权限 - 博客园
Y 文末
- 感觉有帮助的、有需要的伙伴,可点赞、收藏、转发~
- 欢迎评论、沟通~
本文作者:
千千寰宇
本文链接: https://www.cnblogs.com/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!
本文链接: https://www.cnblogs.com/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!