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实现破解12306图片验证码的方法分析
Dec 29 Python
python 爬虫 批量获取代理ip的实例代码
May 22 Python
Django框架模板注入操作示例【变量传递到模板】
Dec 19 Python
对Pytorch中Tensor的各种池化操作解析
Jan 03 Python
python统计函数库scipy.stats的用法解析
Feb 25 Python
Windows 下python3.8环境安装教程图文详解
Mar 11 Python
Python 添加文件注释和函数注释操作
Aug 09 Python
无惧面试,带你搞懂python 装饰器
Aug 17 Python
python实现粒子群算法
Oct 15 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
Nov 10 Python
python+selenium小米商城红米K40手机自动抢购的示例代码
Mar 24 Python
Python带你从浅入深探究Tuple(基础篇)
May 15 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
星际中一些鲜为人知的详细资料
2020/03/04 星际争霸
thinkphp实现附件上传功能
2017/05/26 PHP
php把字符串指定字符分割成数组的方法
2018/03/12 PHP
IE8 下的Js错误HTML Parsing Error...
2009/08/14 Javascript
jquery easyui 结合jsp简单展现table数据示例
2014/04/18 Javascript
JS实现当前页居中分页效果的方法
2015/06/18 Javascript
JavaScript encodeURI 和encodeURIComponent
2015/12/04 Javascript
jQuery Dialog对话框事件用法实例分析
2016/05/10 Javascript
Express + Session 实现登录验证功能
2017/09/08 Javascript
Windows下Node.js安装及环境配置方法
2017/09/18 Javascript
JS从非数组对象转数组的方法小结
2018/03/26 Javascript
js图片查看器插件用法示例
2019/06/22 Javascript
vue新建项目并配置标准路由过程解析
2019/12/09 Javascript
详解在Vue.js编写更好的v-for循环的6种技巧
2020/04/14 Javascript
深入分析JavaScript 事件循环(Event Loop)
2020/06/19 Javascript
Vue中登录验证成功后保存token,并每次请求携带并验证token操作
2020/09/08 Javascript
[05:03]2018DOTA2亚洲邀请赛主赛事首日回顾
2018/04/04 DOTA
[50:34]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python和pyqt实现360的CLable控件
2014/02/21 Python
python 动态获取当前运行的类名和函数名的方法
2014/04/15 Python
python中urllib模块用法实例详解
2014/11/19 Python
进一步理解Python中的函数编程
2015/04/13 Python
python写入中英文字符串到文件的方法
2015/05/06 Python
Python使用try except处理程序异常的三种常用方法分析
2018/09/05 Python
利用python numpy+matplotlib绘制股票k线图的方法
2019/06/26 Python
python 实现二维列表转置
2019/12/02 Python
python里的单引号和双引号的有什么作用
2020/06/17 Python
python使用列表的最佳方案
2020/08/12 Python
Python 处理日期时间的Arrow库使用
2020/08/18 Python
纯CSS3发光分享按钮的实现教程
2014/09/06 HTML / CSS
什么是规则表达式
2012/05/03 面试题
各营销点岗位职责范本
2014/03/05 职场文书
《每逢佳节倍思亲》教后反思
2014/04/19 职场文书
《开国大典》教学反思
2014/04/19 职场文书
综治工作心得体会
2014/09/11 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书