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 相关文章推荐
PHP webshell检查工具 python实现代码
Sep 15 Python
用tensorflow搭建CNN的方法
Mar 05 Python
浅谈Pandas中map, applymap and apply的区别
Apr 10 Python
python脚本监控Tomcat服务器的方法
Jul 06 Python
python退出命令是什么?详解python退出方法
Dec 10 Python
深入浅析Python 中 is 语法带来的误解
May 07 Python
详解如何设置Python环境变量?
May 13 Python
Python中调用其他程序的方式详解
Aug 06 Python
Python交互环境下打印和输入函数的实例内容
Feb 16 Python
python中前缀运算符 *和 **的用法示例详解
May 28 Python
Keras自定义IOU方式
Jun 10 Python
Pycharm 2020.1 版配置优化的详细教程
Aug 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
第十节 抽象方法和抽象类 [10]
2006/10/09 PHP
php 数组的合并、拆分、区别取值函数集
2010/02/15 PHP
destoon实现商铺管理主页设置增加新菜单的方法
2014/06/26 PHP
php实现通用的信用卡验证类
2015/03/24 PHP
php单一接口的实现方法
2015/06/20 PHP
Laravel5.5新特性之友好报错以及展示详解
2017/08/13 PHP
THINKPHP-Apache服务器中使用Alias虚拟目录URL重写 隐藏index.php
2021/03/09 PHP
JS 页面自动加载函数(兼容多浏览器)
2009/05/18 Javascript
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
2009/10/26 Javascript
jQuery查询数据返回object和字符串影响原因是什么
2013/08/09 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
2014/01/10 Javascript
jquery获得同源iframe内body下标签的值的方法
2014/09/25 Javascript
jQuery实现加入购物车飞入动画效果
2015/03/14 Javascript
nodejs通过phantomjs实现下载网页
2015/05/04 NodeJs
基于jQuery实现的QQ表情插件
2015/08/25 Javascript
js跨域请求数据的3种常用的方法
2015/12/01 Javascript
浅析BootStrap模态框的使用(经典)
2016/04/29 Javascript
基于jQuery ligerUI实现分页样式
2016/09/18 Javascript
Vue.js组件使用开发实例教程
2016/11/01 Javascript
vue element 中的table动态渲染实现(动态表头)
2019/11/21 Javascript
Python的time模块中的常用方法整理
2015/06/18 Python
详解如何将python3.6软件的py文件打包成exe程序
2018/10/09 Python
python 将list转成字符串,中间用符号分隔的方法
2018/10/23 Python
通过python爬虫赚钱的方法
2019/01/29 Python
Python 如何优雅的将数字转化为时间格式的方法
2019/09/26 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
2020/02/23 Python
canvas使用注意点总结
2013/07/19 HTML / CSS
瑞典在互联网上最大的宠物商店:Animail
2020/10/31 全球购物
介绍一下linux文件系统分配策略
2012/11/17 面试题
EJB的几种类型
2012/08/15 面试题
五十岁生日宴会答谢词
2014/01/15 职场文书
征兵宣传标语
2014/06/20 职场文书
2014老师三严三实对照检查材料思想汇报
2014/09/18 职场文书
2014年大学宣传部工作总结
2014/12/19 职场文书
职工年度考核评语
2014/12/31 职场文书
linux目录管理方法介绍
2022/06/01 Servers