MySQL Replication 相关的数据库用户权限

为了建立replication,我们需要创建哪几个账号,分别赋予什么样的权限?

假设,服务器A为master,服务器B为slave。在master上需要创建一个账号 'replica_slave_user'@'slave host', 具有replication slave的权限,允许slave服务器连接到master服务器,并获得更新log。在slave上需要创建一个账号'replica_admin_user'@'admin host',具有super权限,能建立replication,启动或停止replication等;此外,还应该赋予该用户Replication Client的权限,能查看slave status等信息。

上述内容的语句如下

# on master server A
mysql> grant replication slave on *.* to 'replica_slave_user'@'slave host'
     > identified by 'complex password';

# on slave server B
mysql> grant …

Continue Reading

mysql kill a connection

从mysql端强制断开一个数据库连接的办法是使用kill命令结束该连接。 首先,使用 show processlist 列出所有的连接,然后找到匹配的连接后,执行 kill命令即可。

mysql> show processlist;
...
mysql> kill <process id>

对于一个繁忙的系统,连接数可能很大,show processlist的输出会很长,难以寻找到目标连接。 可以把输出存放到文件中,再使用shell脚本来协助处理。

Continue Reading

mysqldump 备份账户的最小权限

root虽好,但是所有任务、尤其是脚本自动化任务里面使用root,账号暴露的风险无谓增加。因此,从安全的角度出发,对于不同的管理任务,我们应该使用相应的账号,并赋予最小权限。

mysqldump备份所需要的最小权限:

SELECT
SHOW DATABASES
SHOW VIEW
EVENT
LOCK TABLES
  1. Select 是查询表、程序、数据等所需要的权限。
  2. Show databases 是查询数据库列表所需要的权限。
  3. Show view 是查询视图定义所需要的权限。
  4. event是查询事件所需权限。
  5. lock tables是为了一致性而锁表所需要的权限。
grant SELECT, SHOW DATABASES, SHOW VIEW, EVENT, LOCK TABLES on *.* to
'backup'@'backuphost'identified by 'backup password';

Continue Reading