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

科技资讯 投稿 6500 0 评论

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

    在后端做主从备份;亦或是在大数据领域中,各类CDC同步(Canal / Flink CDC等),均会基于MYSQLbinlog来实现。
  • 因此,知道需要哪些权限?怎么查验去、怎么授权就很重要了。
    不知道什么是数据领域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 operation
  • REPLICATION SLAVE
  • REPLICATION CLIENT
    • 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 权限 - 博客园

    编程笔记 » [数据库]MYSQL之授予/查验binlog权限

    赞同 (29) or 分享 (0)
    游客 发表我的评论   换个身份
    取消评论

    表情
    (0)个小伙伴在吐槽