浅析mysql主从复制中复制⽤户的权限管理
在⽤复制账号对mysqlsalve管理过程中,使⽤哪些权限合适?⾸先看⼀下mysql官⽅提供的权限表:
权限列上下⽂
CREATECreate_priv数据库、表或索引
DROPDrop_priv数据库或表
GRANTOPTIONGrant_priv数据库、表或保存的程序
REFERENCESReferences_priv数据库或表
ALTERAlter_priv表
DELETEDelete_priv表
INDEXIndex_priv表
INSERTInrt_priv表
SELECTSelect_priv表
UPDATEUpdate_priv表
CREATEVIEWCreate_view_priv视图
SHOWVIEWShow_view_priv视图
ALTERROUTINEAlter_routine_priv保存的程序
CREATEROUTINECreate_routine_priv保存的程序
EXECUTEExecute_priv保存的程序
FILEFile_priv服务器主机上的⽂件访问
CREATETEMPORARYTABLESCreate_tmp_table_priv服务器管理
LOCKTABLESLock_tables_priv服务器管理
CREATEUSERCreate_ur_priv服务器管理
PROCESSProcess_priv服务器管理
RELOADReload_priv服务器管理
REPLICATIONCLIENTRepl_client_priv服务器管理
REPLICATIONSLAVERepl_slave_priv服务器管理
SHOWDATABASESShow_db_priv服务器管理
SHUTDOWNShutdown_priv服务器管理
SUPERSuper_priv服务器管理
怎样找到复制账户的最⼩权限?
⾸先使⽤root账号登陆,收回复制账号repl_ur的所有权限:
mysql>lectur();
+----------------+
|ur()|
+----------------+
|root@localhost|
+----------------+
1rowint(0.00c)
mysql>revokeallon*.*fromrepl_ur;
QueryOK,0rowsaffected(0.01c)
mysql>flushprivileges;
QueryOK,0rowsaffected(0.00c)
其次使⽤repl_ur登陆:
mysql>showslavestatusG;
ERROR1227(42000):Accessdenied;youneed(atleastoneof)theSUPER,REPLICATIONCLIENTprivilege(s)forthis
operation
错误提⽰,⾄少需要SUPER和REPLICATIONCLIENT这两个权限之⼀。
(1)赋予REPLICATIONCLIENT权限给repl_ur
mysql>grantREPLICATIONCLIENTON*.*TOrepl_ur;
QueryOK,0rowsaffected(0.00c)
mysql>showslavestatusG;
******************************************************
Slave_IO_State:Connectingtomaster
Master_Host:192.168.6.100
Master_Ur:repl_ur
Master_Port:3306
Connect_Retry:60
......
showslavestatusG;状态查看正常,但是管理slave提⽰如下:
mysql>stopslave;
ERROR1045(28000):Accessdeniedforur'repl_ur'@'%'(usingpassword:YES)
(2)赋予REPLICATIONSLAVE权限给repl_ur:
mysql>grantREPLICATIONSLAVEON*.*TOrepl_ur;
QueryOK,0rowsaffected(0.00c)
mysql>stopslave;
ERROR1045(28000):Accessdeniedforur'repl_ur'@'%'(usingpassword:YES)
mysql>SELECTRepl_slave_priv,Repl_client_priv,super_EREUSER='repl_ur';
+-----------------+------------------+------------+
|Repl_slave_priv|Repl_client_priv|super_priv|
+-----------------+------------------+------------+
|Y|Y|N|
+-----------------+------------------+------------+
1rowint(0.00c)
(3)赋予SUPER权限给repl_ur:
mysql>grantSUPERON*.*TOrepl_ur;
QueryOK,0rowsaffected(0.00c)
mysql>stopslave;
QueryOK,0rowsaffected,1warning(0.00c)
mysql>startslave;
QueryOK,0rowsaffected,1warning(0.00c)
(4)赋予RELOAD权限给repl_ur
在没有RELOAD权限时提⽰如下错误:
mysql>retslave;
ERROR1227(42000):Accessdenied;youneed(atleastoneof)theRELOADprivilege(s)forthisoperation
mysql>grantreloadon*.*torepl_ur;
QueryOK,0rowsaffected(0.00c)
mysql>retslave;
QueryOK,0rowsaffected(0.00c)
最后,总结如下:
REPLICATIONCLIENT(客户端)、REPLICATIONSLAVE(服务端)、SUPER(管理)和RELOAD四个权限最好在创建⽤户时就赋予,以免造成不必
要的⿇烦,当然,要是主主配置,最好给予ALL权限。
上述只是在⼯作中的⼀点思考,希望看到这篇博⽂的博友给予指正。
本文发布于:2022-12-31 10:07:54,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/64784.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |