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 相关文章推荐
Django1.3添加app提示模块不存在的解决方法
Aug 26 Python
在Python的Bottle框架中使用微信API的示例
Apr 23 Python
python中函数总结之装饰器闭包详解
Jun 12 Python
详解python如何调用C/C++底层库与互相传值
Aug 10 Python
深入浅析ImageMagick命令执行漏洞
Oct 11 Python
python实现FTP服务器服务的方法
Apr 11 Python
Python AES加密实例解析
Jan 18 Python
浅析python3中的os.path.dirname(__file__)的使用
Aug 30 Python
利用Python计算KS的实例详解
Mar 03 Python
Python如何生成xml文件
Jun 04 Python
Python Http请求json解析库用法解析
Nov 28 Python
Pytorch1.5.1版本安装的方法步骤
Dec 31 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 在线打包_支持子目录
2008/06/28 PHP
PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
2012/03/07 PHP
PHP读取CURL模拟登录时生成Cookie文件的方法
2014/11/04 PHP
php计算数组相同值出现次数的代码(array_count_values)
2015/01/20 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
网页里控制图片大小的相关代码
2006/06/13 Javascript
prototype 源码中文说明之 prototype.js
2006/09/22 Javascript
jquerymobile局部渲染的各种刷新方法小结
2014/03/05 Javascript
Javascript实现可旋转的圆圈实例代码
2015/08/04 Javascript
JavaScript 字符串数字左补位,右补位,取固定长度,截位扩展函数代码
2017/03/25 Javascript
js+html5实现侧滑页面效果
2017/07/15 Javascript
基于JavaScript实现数码时钟效果
2020/03/30 Javascript
webpack实用小功能介绍
2018/01/02 Javascript
python模拟登录百度贴吧(百度贴吧登录)实例
2013/12/18 Python
Python使用Supervisor来管理进程的方法
2015/05/28 Python
python实现中文转换url编码的方法
2016/06/14 Python
python爬虫获取京东手机图片的图文教程
2017/12/29 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
彻彻底底地理解Python中的编码问题
2018/10/15 Python
Python重新加载模块的实现方法
2018/10/16 Python
python原类、类的创建过程与方法详解
2019/07/19 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
2019/10/04 Python
python实现画循环圆
2019/11/23 Python
Python 中如何实现参数化测试的方法示例
2019/12/10 Python
python使用pymongo与MongoDB基本交互操作示例
2020/04/09 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
2014年上半年工作自我评价
2014/01/18 职场文书
舞蹈毕业生的自我评价
2014/03/05 职场文书
高中生国庆节演讲稿范文2014
2014/09/21 职场文书
迟到检讨书2000字(精选篇)
2014/10/07 职场文书
盗窃案辩护词
2015/05/21 职场文书
教师节感想
2015/08/11 职场文书
python 利用 PIL 将数组值转成图片的实现
2021/04/12 Python
Python快速优雅的批量修改Word文档样式
2021/05/20 Python
基于Python编写简易版的天天跑酷游戏的示例代码
2022/03/23 Python
索尼ICF-36收音机评测
2022/04/30 无线电