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中使用HTMLParser解析html实例
Feb 08 Python
使用Python下载歌词并嵌入歌曲文件中的实现代码
Nov 13 Python
在windows系统中实现python3安装lxml
Mar 23 Python
LRUCache的实现原理及利用python实现的方法
Nov 21 Python
目前最全的python的就业方向
Jun 05 Python
用Python将结果保存为xlsx的方法
Jan 28 Python
python整小时 整天时间戳获取算法示例
Feb 20 Python
对python中的装包与解包实例详解
Aug 24 Python
将python2.7添加进64位系统的注册表方式
Nov 20 Python
Python使用Tkinter实现滚动抽奖器效果
Jan 06 Python
使用 Python 遍历目录树的方法
Feb 29 Python
Python无损压缩图片的示例代码
Aug 06 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 星际争霸
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
深入理解用mysql_fetch_row()以数组的形式返回查询结果
2013/06/05 PHP
php防注入及开发安全详细解析
2013/08/09 PHP
微信API接口大全
2015/04/15 PHP
在laravel5.2中实现点击用户头像更改头像的方法
2019/10/14 PHP
php 中的信号处理操作实例详解
2020/03/04 PHP
javascript 操作符(~、&、|、^、)使用案例
2014/12/31 Javascript
判断浏览器的内核及版本号方法汇总
2015/01/05 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
JS去除iframe滚动条的方法
2015/04/01 Javascript
js实现图片点击左右轮播
2015/07/08 Javascript
Angular的MVC和作用域
2016/12/26 Javascript
JS实现隔行换色的表格排序
2017/03/27 Javascript
js实现以最简单的方式将数组元素添加到对象中的方法
2017/12/20 Javascript
解决vue打包之后静态资源图片失效的问题
2018/02/21 Javascript
JS动画定时器知识总结
2018/03/23 Javascript
jQuery.extend 与 jQuery.fn.extend的用法及区别实例分析
2018/07/25 jQuery
移动端自适应flexible.js的使用方法(不用三大框架,仅写一个单html页面使用)推荐
2019/04/02 Javascript
javascript实现雪花飘落效果
2020/08/19 Javascript
python多线程用法实例详解
2015/01/15 Python
Python绑定方法与非绑定方法详解
2017/08/18 Python
Selenium鼠标与键盘事件常用操作方法示例
2018/08/13 Python
python如何实现一个刷网页小程序
2018/11/27 Python
python 写一个水果忍者游戏
2021/01/13 Python
详解CSS3 用border写 空心三角箭头 (两种写法)
2017/09/29 HTML / CSS
英国航空官网:British Airways
2016/09/11 全球购物
自动化专业职业生涯规划书范文
2014/01/16 职场文书
领导干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
涉外离婚协议书怎么写
2014/11/20 职场文书
邀请函的格式
2015/01/30 职场文书
学术会议通知
2015/04/15 职场文书
企业计划生育责任书
2015/05/09 职场文书
田径运动会通讯稿
2015/07/18 职场文书
Spring Boot 启动、停止、重启、状态脚本
2021/06/26 Java/Android
Java Socket实现多人聊天系统
2021/07/15 Java/Android