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 相关文章推荐
有关wxpython pyqt内存占用问题分析
Jun 09 Python
Python获取网页上图片下载地址的方法
Mar 11 Python
Python复数属性和方法运算操作示例
Jul 21 Python
使用Python的turtle模块画图的方法
Nov 15 Python
python爬取微信公众号文章的方法
Feb 26 Python
HTML的form表单和django的form表单
Jul 25 Python
python实现宿舍管理系统
Nov 22 Python
python使用numpy实现直方图反向投影示例
Jan 17 Python
django序列化时使用外键的真实值操作
Jul 15 Python
python使用requests库爬取拉勾网招聘信息的实现
Nov 20 Python
Python项目实战之使用Django框架实现支付宝付款功能
Feb 23 Python
Python实现数据的序列化操作详解
Jul 07 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
解析strtr函数的效率问题
2013/06/26 PHP
php使用curl抓取qq空间的访客信息示例
2014/02/28 PHP
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
jquery控制listbox中项的移动并排序
2009/11/12 Javascript
javascript与jquery中跳出循环的区别总结
2013/11/04 Javascript
JS对象转换为Jquery对象实现代码
2013/12/29 Javascript
关于编写性能高效的javascript事件的技术
2014/11/28 Javascript
JQuery动态添加和删除表格行的方法
2015/03/09 Javascript
原生javascript实现自动更新的时间日期
2016/02/12 Javascript
jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法
2016/08/05 Javascript
基于vue.js的分页插件详解
2017/11/27 Javascript
js数据类型检测总结
2018/08/05 Javascript
js实现通过开始结束控制的计时器
2019/02/25 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
2019/09/11 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
python使用Image处理图片常用技巧分析
2015/06/01 Python
Python的Flask框架的简介和安装方法
2015/11/13 Python
Python实现购物程序思路及代码
2017/07/24 Python
对python中的pop函数和append函数详解
2018/05/04 Python
详解Python_shutil模块
2019/03/15 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
2019/08/07 Python
Python csv模块使用方法代码实例
2019/08/29 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
2020/05/17 Python
tensorflow之读取jpg图像长和宽实例
2020/06/18 Python
HTML5拖放API实现自动生成相框功能
2020/04/07 HTML / CSS
林清轩官方网站:山茶花润肤油开创者
2016/10/26 全球购物
草莓网英国官网:Strawberrynet UK
2017/02/12 全球购物
美国工业用品采购网站:Zoro.com
2020/10/27 全球购物
护理学中专毕业生求职信
2013/11/11 职场文书
会展中心部门工作职责
2013/11/27 职场文书
物业经理自我鉴定
2014/03/03 职场文书
个人求职自荐信范文
2014/06/20 职场文书
2014年化验室工作总结
2014/11/21 职场文书
2015年优质护理服务工作总结
2015/04/08 职场文书
高一军训感想
2015/08/07 职场文书
Win11如何设置右键单击显示所有选项?Win11右键单击显示所有选项设置教程
2022/04/08 数码科技