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中的sort方法使用详解
Jul 25 Python
python通过socket查询whois的方法
Jul 18 Python
python如何在列表、字典中筛选数据
Mar 19 Python
python读取.mat文件的数据及实例代码
Jul 12 Python
Python sep参数使用方法详解
Feb 12 Python
Mac中PyCharm配置Anaconda环境的方法
Mar 04 Python
keras模型保存为tensorflow的二进制模型方式
May 25 Python
基于python实现生成指定大小txt文档
Jul 20 Python
paramiko使用tail实时获取服务器的日志输出详解
Dec 06 Python
python中操作文件的模块的方法总结
Feb 04 Python
python中__slots__节约内存的具体做法
Jul 04 Python
Python简易开发之制作计算器
Apr 28 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错误信息方法的详解
2013/06/09 PHP
根据中文裁减字符串函数的php代码
2013/12/03 PHP
PHP COOKIE及时生效的方法介绍
2014/02/14 PHP
php中file_get_content 和curl以及fopen 效率分析
2014/09/19 PHP
利用PHP如何实现Socket服务器
2015/09/23 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
2019/10/11 PHP
JavaScript 指导方针
2007/04/05 Javascript
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
javascript中的数字与字符串相加实例分析
2011/08/14 Javascript
js实现图片放大缩小功能后进行复杂排序的方法
2012/11/08 Javascript
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
2013/04/26 Javascript
浅谈Javascript Base64 加密解密
2014/12/28 Javascript
JavaScript实现下拉列表框数据增加、删除、上下排序的方法
2015/08/11 Javascript
详解在vue-cli中使用路由
2017/09/25 Javascript
微信小程序实现的涂鸦功能示例【附源码下载】
2018/01/12 Javascript
详解react关于事件绑定this的四种方式
2018/03/09 Javascript
JavaScript事件概念详解(区分静态注册和动态注册)
2021/02/05 Javascript
深入理解Python 代码优化详解
2014/10/27 Python
Python中的__new__与__init__魔术方法理解笔记
2014/11/08 Python
Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
2015/04/08 Python
利用Python脚本实现ping百度和google的方法
2017/01/24 Python
python使用knn实现特征向量分类
2018/12/26 Python
用Anaconda安装本地python包的方法及路径问题(图文)
2019/07/16 Python
python读取csv文件指定行的2种方法详解
2020/02/13 Python
详解CSS3中border-image的使用
2015/07/18 HTML / CSS
.net C#面试题
2012/08/28 面试题
2014年自我评价
2014/01/04 职场文书
致长跑运动员广播稿
2014/01/31 职场文书
开业庆典策划方案
2014/02/18 职场文书
乡镇党建工作汇报材料
2014/10/27 职场文书
先进教师个人总结
2015/02/11 职场文书
2016年重阳节慰问信
2015/12/01 职场文书
详解Java分布式事务的 6 种解决方案
2021/06/26 Java/Android
DIY胆机必读:各国电子管评价
2022/04/06 无线电
TypeScript实用技巧 Nominal Typing名义类型详解
2022/09/23 Javascript
详解CSS3浏览器兼容
2022/12/24 HTML / CSS