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使用cookielib库示例分享
Mar 03 Python
python使用点操作符访问字典(dict)数据的方法
Mar 16 Python
Python基础入门之seed()方法的使用
May 15 Python
python urllib urlopen()对象方法/代理的补充说明
Jun 29 Python
python解析json串与正则匹配对比方法
Dec 20 Python
解决Python中回文数和质数的问题
Nov 24 Python
Python三元运算与lambda表达式实例解析
Nov 30 Python
Python 日期的转换及计算的具体使用详解
Jan 16 Python
keras中的backend.clip用法
May 22 Python
Python爬虫获取页面所有URL链接过程详解
Jun 04 Python
python字典与json转换的方法总结
Dec 28 Python
用Python实现屏幕截图详解
Jan 22 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 动态随机生成验证码类代码
2010/04/09 PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
2013/07/01 PHP
超清晰的document对象详解
2007/02/27 Javascript
JQuery获取当前屏幕的高度宽度的实现代码
2011/07/12 Javascript
输入密码检测大写是否锁定js实现代码
2012/12/03 Javascript
avascript中的自执行匿名函数应用示例
2014/09/15 Javascript
javascript中html字符串转化为jquery dom对象的方法
2015/08/27 Javascript
Bootstrap的图片轮播示例代码
2015/08/31 Javascript
javascript下拉列表中显示树形菜单的实现方法
2015/11/17 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
微信小程序 wx.request(OBJECT)发起请求详解
2016/10/13 Javascript
基于angular实现模拟微信小程序swiper组件
2017/06/11 Javascript
JavaScript注册时密码强度校验代码
2017/06/30 Javascript
Angular4 反向代理Details实践
2018/05/30 Javascript
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
JS实现获取自定义属性data值的方法示例
2018/12/19 Javascript
微信小程序使用二次贝塞尔曲线画波浪
2018/12/25 Javascript
基于JavaScript的数据结构队列动画实现示例解析
2020/08/06 Javascript
简单介绍Python中的readline()方法的使用
2015/05/24 Python
Python使用Scrapy爬取妹子图
2015/05/28 Python
python字典快速保存于读取的方法
2018/03/23 Python
python实现百度语音识别api
2018/04/10 Python
Python的条件表达式和lambda表达式实例
2019/01/31 Python
python tkinter实现界面切换的示例代码
2019/06/14 Python
Python批量查询关键词微信指数实例方法
2019/06/27 Python
简单了解python单例模式的几种写法
2019/07/01 Python
使用opencv中匹配点对的坐标提取方式
2020/06/04 Python
Python中zip函数如何使用
2020/06/04 Python
CSS3的常见transformation图形变化用法小结
2016/05/13 HTML / CSS
PurCotton全棉时代官网:100%天然棉花生产的生活护理用品
2016/11/18 全球购物
英国信箱在线鲜花速递公司:Bloom & Wild
2019/03/10 全球购物
3D空间设计学生找工作的自我评价
2013/10/28 职场文书
房屋授权无偿使用证明
2014/11/29 职场文书
springboot layui hutool Excel导入的实现
2022/03/31 Java/Android
画错魏国疆域啦!《派对咖孔明》动画因作画失误于官网致歉
2022/04/07 日漫
html解决浏览器记住密码输入框的问题
2023/05/07 HTML / CSS