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

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

时间:2023-04-28 19:01:00浏览次数:52  
标签:binlog show 查验 博客园 CDC REPLICATION MYSQL 权限

  • 在后端做主从备份;亦或是在大数据领域中,各类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 参考与推荐文献

标签:binlog,show,查验,博客园,CDC,REPLICATION,MYSQL,权限
From: https://www.cnblogs.com/johnnyzen/p/17362965.html

相关文章

  • Cobar使用文档(可用作MySQL大型集群解决方案)
    Cobar使用文档(可用作MySQL大型集群解决方案)2014-06-17 1514举报简介: 原文:http://blog.csdn.net/shagoo/article/details/8191346项目已经迁移到Git上面,地址为:https://github.com/alibaba/cobar最近好不容易抽空研究了下Cobar,感觉这个产品确实很不错(在文档方面比Amoeba强多了......
  • mysql中列转行,并多个字段转到一行中的一个字段上,中间用逗号分开
    mysql中列转行,并多个字段转到一行中的一个字段上,中间用逗号分开 SELECT group_concat(a.idSEPARATOR',')ASidsFROM ( SELECT * FROM tablename WHERE 1=1 ORDERBY rand() LIMIT10 )a ......
  • 开心档之MySQL 创建数据库
    MySQL数据类型MySQL中定义数据字段的类型对你数据库的优化是非常重要的。MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。数值类型MySQL支持所有标准SQL数值数据类型。这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似......
  • centos7 安装MySql 安装5.7.28
    1、先执行查询:rpm-qa|grepmariadb执行结果如:mariadb-libs-5.5.64-1.el7.x86_642、先执行删除:rpm-e--nodepsmariadb-libs3、下载MySQL数据库:这里使用的是mysql-5.7.28版本4、将下载好的MySQL安装包上传到服务器5、到目录中解压文件:tar-xvfmysql-5.7.28-1.el7.x86_6......
  • 开心档之MySQL 数据类型
    MySQL数据类型MySQL中定义数据字段的类型对你数据库的优化是非常重要的。MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。数值类型MySQL支持所有标准SQL数值数据类型。这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以......
  • 开心档之MySQL 创建数据库
    MySQL创建数据库我们可以在登陆MySQL服务后,使用create命令创建数据库,语法如下:CREATEDATABASE数据库名;以下命令简单的演示了创建数据库的过程,数据名为RUNOOB:[root@host]#mysql-uroot-pEnterpassword:******#登录后进入终端mysql>createDATABASE......
  • Ubuntu搭建MySQL服务器
    Ubuntu安装MySQL使用apt命令安装”sudoapt-getinstallmysql-server“使用mysqladmin命令检查服务器的版本mysqladmin--version登录MySQL服务器(记录密码:17909)mysql-uroot-p('\h'forhelp.Type'\c'toclearthecurrentinputstatement.)Linux系统启动时启动MySQ......
  • Mysql数据库设计和事务
    一对一在任意一方建立外键,关联另一方主键一对多在多的一方建立外键关联另一方的主键多对多1.建立中间表2.中间表至少包含2个外键,分别关联双方主键内连接1.隐式连接select*fromemp,deptwhereemp.dep_id=dept.did   2.显式连接select*fromemp(inner)joindep......
  • mysql创建索引三种方式
    1.新建表中添加索引①普通索引createtablet_dept(nointnotnullprimarykey,namevarchar(20)null,sexvarchar(2)null,infovarchar(20)null,indexindex_no(no))②唯一索引createtablet_dept(nointnotnullprimarykey,......
  • Python: MySQL
     Pool   使用pool正确方法:从pool取connection,使用完close(),底层CMySQLConnection会return到deque,此时从pool中得到的PooledMySQLConnection底层_cnx变为None ......