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模块restful使用方法实例
Dec 10 Python
利用Python的Twisted框架实现webshell密码扫描器的教程
Apr 16 Python
在centos7中分布式部署pyspider
May 03 Python
Python中.join()和os.path.join()两个函数的用法详解
Jun 11 Python
python查看文件大小和文件夹内容的方法
Jul 08 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
Jul 11 Python
Python自动化导出zabbix数据并发邮件脚本
Aug 16 Python
python使用socket 先读取长度,在读取报文内容示例
Sep 26 Python
selenium WebDriverWait类等待机制的实现
Mar 18 Python
基于python requests selenium爬取excel vba过程解析
Aug 12 Python
Python List remove()实例用法详解
Aug 02 Python
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
Nov 11 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
咖啡的化学
2021/03/03 咖啡文化
Memcached常用命令以及使用说明详解
2013/06/27 PHP
php教程之phpize使用方法
2014/02/12 PHP
php的webservice的wsdl的XML无法显示问题的解决方法
2014/03/11 PHP
大家须知简单的php性能优化注意点
2016/01/04 PHP
PHP中的表达式简述
2016/05/29 PHP
php实现生成PDF文件的方法示例【基于FPDF类库】
2018/07/21 PHP
理解Javascript_14_函数形式参数与arguments
2010/10/20 Javascript
js禁止小键盘输入数字功能代码
2011/08/01 Javascript
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
2012/03/01 Javascript
JavaScript执行效率与性能提升方案
2012/12/21 Javascript
js控制容器隐藏出现防止样式变化的两种方法
2014/04/25 Javascript
一个支付页面DEMO附截图
2014/07/22 Javascript
js设置控件的隐藏与显示的两种方法
2014/08/21 Javascript
javascript生成img标签的3种实现方法(对象、方法、html)
2015/12/25 Javascript
JS/jQ实现免费获取手机验证码倒计时效果
2016/06/13 Javascript
JS动态给对象添加事件的简单方法
2016/07/19 Javascript
基于vue2实现左滑删除功能
2017/11/28 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
2018/09/06 Javascript
[03:04]2018年国际邀请赛典藏宝瓶&莱恩声望物品展示 片尾有彩蛋
2018/06/04 DOTA
在Docker上部署Python的Flask框架的教程
2015/04/08 Python
实例讲解python中的协程
2018/10/08 Python
Python设计模式之命令模式原理与用法实例分析
2019/01/11 Python
python 获取等间隔的数组实例
2019/07/04 Python
下载官网python并安装的步骤详解
2019/10/12 Python
基于Python数据结构之递归与回溯搜索
2020/02/26 Python
Python实现从N个数中找到最大的K个数
2020/04/02 Python
DHC美国官网:日本通信销售第一的化妆品品牌
2017/11/12 全球购物
驾驶员岗位职责
2014/01/29 职场文书
青春励志演讲稿范文
2014/08/25 职场文书
我的中国心演讲稿
2014/09/04 职场文书
运动会加油稿50字
2015/07/21 职场文书
《彼得与狼》教学反思
2016/02/20 职场文书
Jedis操作Redis实现模拟验证码发送功能
2021/09/25 Redis
Vue的过滤器你真了解吗
2022/02/24 Vue.js
使用vue判断当前环境是安卓还是IOS
2022/04/12 Vue.js