【资料图】
Canal/ Flink CDC等),均会基于MYSQL的binlog来实现。因此,知道需要哪些权限?怎么查验去、怎么授权就很重要了。不知道什么是数据领域的感觉网上的文章没成体系地清楚,而今天工作上处理问题的过程中遇到了此疑问,且曾多次对此产生疑问,自然便有了这一篇,作为个人的Momo备忘笔记~
CDC的朋友,可参见我刚参加工作,并进入大数据领域时的这篇科普文章~[大数据]ETL之增量数据抽取(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 operationREPLICATION SLAVEREPLICATION CLIENTBinlog为什么需要这些权限?
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/AdminGuideshow variables like "log_bin";show variables like "binlog_format";Step2 查验指定用户是否具有指定库/指定表的binlog权限SHOW GRANTS FOR "{userName}"@"%";3 授予权限由图可见,这显然说明了该用户对图中这个库有binlog权限。
GRANT SELECT , REPLICATION SLAVE , REPLICATION CLIENT ON *.*TO "{username}"@"%" IDENTIFIED BY "{password}"; -- % 可替换为 指定的 hostX 参考与推荐文献[大数据]ETL之增量数据抽取(CDC) - 博客园/千千寰宇[数据库]MySQL之数据库管理篇 - 博客园/千千寰宇 【推荐】[数据库]MySQL之SQL查询 - 博客园/千千寰宇MySQL Binlog 权限 - 博客园Y 文末感觉有帮助的、有需要的伙伴,可点赞、收藏、转发~欢迎评论、沟通~ 关键词:
