[数据库]MYSQL之授予/查验binlog权限

博客 分享
0 233
优雅殿下
优雅殿下 2023-04-28 19:54:36
悬赏:0 积分 收藏

[数据库]MYSQL之授予/查验binlog权限

  • 在后端做主从备份;亦或是在大数据领域中,各类CDC同步(Canal / Flink CDC等),均会基于MYSQLbinlog来实现。
  • 因此,知道需要哪些权限?怎么查验去、怎么授权就很重要了。

感觉网上的文章没成体系地清楚,而今天工作上处理问题的过程中遇到了此疑问,且曾多次对此产生疑问,自然便有了这一篇,作为个人的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
  • 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 参考与推荐文献

Y 文末

  • 感觉有帮助的、有需要的伙伴,可点赞、收藏、转发~
  • 欢迎评论、沟通~
posted @ 2023-04-28 18:52  千千寰宇  阅读(2)  评论(0编辑  收藏  举报
回帖
    优雅殿下

    优雅殿下 (王者 段位)

    2017 积分 (2)粉丝 (47)源码

    小小码农,大大世界

     

    温馨提示

    亦奇源码

    最新会员