python批量导出导入MySQL用户的方法


Posted in Python onNovember 15, 2013

数据库迁移(A -> B),需要把用户也迁移过去,而用户表(mysql.user)有上百个用户。有2种方法进行快速迁移:
1,在同版本的条件下,直接备份A服务器的mysql数据库,还原到B服务器。
2,要是不同版本的数据(5.1 -> 5.5),很可能mysql数据库下面的一些表结构,甚至表数据的默认值都不一样,按照1的方法进行迁移,虽然最后也是可以正常访问,但是还是有些不太放心,很可能会影响到了B服务器上的MySQL,这样就需要用命令行来生成帐号了,这样是最安全和放心的。下面用python脚本来进行批量导出:

#!/bin/env python
# -*- encoding: utf-8 -*-
#-----------------------------------------
# Name:        mysql_user_dump.py
# Purpose:     批量导出用户
# Author:      zhoujy
# Created:     2013-05-28
#-----------------------------------------
import MySQLdb
def get_data(conn):
    query  = 'select user,host from mysql.user order by user'
    cursor = conn.cursor()
    cursor.execute(query)
    lines  = cursor.fetchall()
    return lines
def output_data(conn,rows):
    for user,host in rows:
        query  = "show grants for '%s'@'%s'" %(user,host)
        cursor = conn.cursor()
        cursor.execute(query)
        show_pri = cursor.fetchall()
        for grants_command in show_pri:
            print ''.join(grants_command)+';'
        print ''
if __name__ =='__main__':
    conn = MySQLdb.connect(host='localhost',user='root',passwd='123456',db='mysql',port=3306,charset='utf8')
    rows  = get_data(conn)
    output_data(conn,rows)

运行:python mysql_user_dump.py

GRANT REPLICATION SLAVE ON *.* TO 'rep'@'192.168.234.%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.234.%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';
GRANT USAGE ON *.* TO 'test'@'192.168.234.%' IDENTIFIED BY PASSWORD '*2A032F7C5BA932872F0F045E0CF6B53CF702F2C5';
GRANT SELECT, INSERT, UPDATE, DELETE ON `test`.* TO 'test'@'192.168.234.%';
GRANT USAGE ON *.* TO 'zzz_test'@'192.168.234.%' IDENTIFIED BY PASSWORD '*2A032F7C5BA932872F0F045E0CF6B53CF702F2C5';
GRANT SELECT, INSERT, UPDATE, DELETE ON `zzz%`.* TO 'zzz_test'@'192.168.234.%';

最后把这些命令在B上面执行就好了,也可以在执行脚本的时候重定向到一个sql文件:如:user.sql,在到B服务器的数据库里面执行source user.sql 就完成了导入工作。
第2个方法最好,不需要1里面的删表和重建表的操作,最安全。

Python 相关文章推荐
python多线程操作实例
Nov 21 Python
python中sleep函数用法实例分析
Apr 29 Python
EM算法的python实现的方法步骤
Jan 02 Python
python使用folium库绘制地图点击框
Sep 21 Python
Python使用random.shuffle()打乱列表顺序的方法
Nov 08 Python
python3 实现一行输入,空格隔开的示例
Nov 14 Python
python调用c++ ctype list传数组或者返回数组的方法
Feb 13 Python
Python面向对象之继承和多态用法分析
Jun 08 Python
python使用writerows写csv文件产生多余空行的处理方法
Aug 01 Python
Flask框架搭建虚拟环境的步骤分析
Dec 21 Python
Python 添加文件注释和函数注释操作
Aug 09 Python
python Protobuf定义消息类型知识点讲解
Mar 02 Python
python连接MySQL、MongoDB、Redis、memcache等数据库的方法
Nov 15 #Python
python实现代理服务功能实例
Nov 15 #Python
Python(Tornado)模拟登录小米抢手机
Nov 12 #Python
Python3实现的腾讯微博自动发帖小工具
Nov 11 #Python
python正则分组的应用
Nov 10 #Python
python Django连接MySQL数据库做增删改查
Nov 07 #Python
使用Python下载Bing图片(代码)
Nov 07 #Python
You might like
PHP实现多服务器session共享之NFS共享的方法
2007/03/16 PHP
简化php模板页面中分页代码的解析
2009/02/06 PHP
PHP中设置时区方法小结
2012/06/03 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
2015/12/31 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
2019/08/03 PHP
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
2007/04/29 Javascript
JS 遮照层实现代码
2010/03/31 Javascript
jquery.AutoComplete.js中文修正版(支持firefox)
2010/04/09 Javascript
分享12个非常实用的JavaScript小技巧
2016/05/11 Javascript
浅谈react.js 之 批量添加与删除功能
2017/04/17 Javascript
react.js使用webpack搭配环境的入门教程
2017/08/14 Javascript
详解angularjs实现echart图表效果最简洁教程
2017/11/29 Javascript
jQuery实现简单复制json对象和json对象集合操作示例
2018/07/09 jQuery
微信小程序实现留言板(Storage)
2018/11/02 Javascript
Angular7.2.7路由使用初体验
2019/03/01 Javascript
jQuery中实现text()的方法
2019/04/04 jQuery
angularjs1.X 重构controller 的方法小结
2019/08/15 Javascript
微信小程序模板消息限制实现无限制主动推送的示例代码
2019/08/27 Javascript
浅谈Vue3 Composition API如何替换Vue Mixins
2020/04/29 Javascript
JS 图片压缩原理与实现方法详解
2020/04/29 Javascript
python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE方法
2017/05/24 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
2018/02/10 Python
python使用生成器实现可迭代对象
2018/03/20 Python
Python实现string字符串连接的方法总结【8种方式】
2018/07/06 Python
在python中实现对list求和及求积
2018/11/14 Python
python2.7 安装pip的方法步骤(管用)
2019/05/05 Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
2020/02/25 Python
Python实现对adb命令封装
2020/03/06 Python
生产副总岗位职责
2013/11/28 职场文书
大学生专科学习生活的自我评价
2013/12/07 职场文书
国培教师自我鉴定
2014/02/12 职场文书
在职人员跳槽求职信
2015/03/20 职场文书
2015年党建工作总结
2015/03/30 职场文书
物业工程部主管岗位职责
2015/04/16 职场文书
工作服管理制度范本
2015/08/06 职场文书
运动会跳远广播稿
2015/08/19 职场文书