【资料图】
在后端做主从备份;亦或是在大数据领域中,各类CDC同步(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 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/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}"; -- % 可替换为 指定的 host
X 参考与推荐文献[大数据]ETL之增量数据抽取(CDC) - 博客园/千千寰宇[数据库]MySQL之数据库管理篇 - 博客园/千千寰宇 【推荐】[数据库]MySQL之SQL查询 - 博客园/千千寰宇MySQL Binlog 权限 - 博客园Y 文末感觉有帮助的、有需要的伙伴,可点赞、收藏、转发~欢迎评论、沟通~ 关键词: