python批量导出导入MySQL用户的方法

2014-03-19  来源:本站原创  分类:Python  人气:2 

这篇文章主要介绍了

数据库迁移(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批量导出导入MySQL用户的方法 2014-03-19

    这篇文章主要介绍了 数据库迁移(A -> B),需要把用户也迁移过去,而用户表(mysql.user)有上百个用户.有2种方法进行快速迁移: 1,在同版本的条件下,直接备份A服务器的mysql数据库,还原到B服务器. 2,要是不同版本的数据(5.1 -> 5.5),很可能mysql数据库下面的一些表结构,甚至表数据的默认值都不一样,按照1的方法进行迁移,虽然最后也是可以正常访问,但是还是有些不太放心,很可能会影响到了B服务器上的MySQL,这样就需要用命令行来生成帐号了,这样是最安全和放心的.

  • python批量生成本地ip地址的方法 2014-11-04

    这篇文章主要介绍了python批量生成本地ip地址的方法,实例分析了Python实现生成本地IP地址并绑定到网卡上的技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了python批量生成本地ip地址的方法.分享给大家供大家参考.具体分析如下: 这段代码用于在本地计算机上生成本地ip地址绑定到网卡,生成的是一个bat的批处理文件,运行此批处理文件,可以通过ipconfig查看 #!/usr/bin/python2.7 # -*- coding: utf-8 -*- # Filenam

  • Python编写检测数据库SA用户的方法 2014-09-08

    这篇文章主要介绍了Python编写检测数据库SA用户的方法,需要的朋友可以参考下 本文讲述一个用Python写的小程序,用于有注入点的链接,以检测当前数据库用户是否为sa,详细代码如下: # Code by zhaoxiaobu Email: [email protected] #-*- coding: UTF-8 -*- from sys import exit from urllib import urlopen from string import join,strip from re i

  • mysql导出导入中文表解决方法 2015-01-22

    在开发过程中会经常用到mysql导出导入中文表,本文将详细介绍其如何使用,需要的朋友可以参考下 在开发过程中会经常用到mysql导出导入中文表,本文将详细介绍其如何使用,需要的朋友可以参考下 一.先针对utf8导出: (1)导出源数据库的所有表: mysqldump -u root -p密码 --socket=mysql.sock --default-character-set=utf8 --set-charset=utf8 --hex-blob --databases 数据库名 > utf8.

  • python批量下载图片的三种方法 2014-09-15

    用python批量下载一个网页中的图片,需要用到扩展库来解析html代码 有三种方法,一是用微软提供的扩展库win32com来操作IE,二是用selenium的webdriver,三是用python自带的HTMLParser解析.win32com可以获得类似js里面的document对象,但貌似是只读的(文档都没找到).selenium则提供了Chrome,IE,FireFox等的支持,每种浏览器都有execute_script和find_element_by_xx方法,可以方便的执行js脚本(

  • phpMyAdmin下将Excel中的数据导入MySql的图文方法 2014-06-06

    使用phpMyAdmin将Excel中的数据导入MySql,需要将execl导入到mysql数据库的朋友可以参考下. 一开始导入失败了. 生成的SQL语句不正确. SQL 查询: INSERT INTO `cc_present`.`c_city` (`A`, `B`, `C`) VALUES (NULL, 1, '市辖区')... 像这样列名称变为A,B,C了. 问题出在两个地方. 1.需要在Excel文件中加入列名称 另外注意Excel的Sheet名应该为表的名称,像下面这样. 2.需要勾选忽

  • MySQL数据的导出.导入(mysql内部命令:mysqldump.mysql) 2013-05-28

    备份数据库 1.导出某个数据库(数据.表结构.函数.存储过程全部备份) #mysqldump -BR 数据库名 -uroot -p密码 --default-character-set=utf8 > xxx.sql 2.导出某个数据库特定表和数据 (数据和表结构) #mysqldump 数据库名 -uroot -p密码 --table 表名 > xxx.sql 3.导出某个数据库所有表结构(不包含表中数据) #mysqldump -d 数据库名 -uroot -p密码 > xxx.sql

  • 解析csv数据导入mysql的方法 2015-03-06

    本篇文章是对将csv数据导入mysql的实现方法进行了详细的分析介绍,需要的朋友参考下 mysql自己有个csv引擎,可以通过这个引擎来实现将csv中的数据导入到mysql数据库中,并且速度比通过php或是python写的批处理程序快的多. 具体的实现代码示例: load data infile '/tmp/file.csv' into table _tablename (set character utf8) fields terminated by ',' enclosed by '"' l

  • 阿里云服务器新建用户具体方法 2014-03-30

    本文包括了新建服务器用户和新建MySQL用户的方法,有需要的朋友可以参考一下 一. 新建服务器用户: 用户管理,主要的工作就是建立一个合法的用户帐户.设置和管理用户的密码.修改用户帐户的属性以及在必要时删除已经废弃的用户帐号. 1)增加一个新用户 在Linux系统中,只有root用户才能够创建一个新用户,如下的命令将新建一个登录名user1的用户. #useradd user1 但是,这个用户还不能够登录,因为还没给它设置初始密码,而没有密码的用户是不能够登录系统的.在默认情况下,将会在/hom

  • mysql导入导出数据中文乱码解决方法小结 2014-05-25

    本文章总结了mysql导入导出数据中文乱码解决方法,出现中文乱码一般情况是导入导入时编码的设置问题,我们只要把编码调整一致即可解决此方法,下面是搜索到的一些方法总结,方便需要的朋友 linux系统中 linux默认的是utf8编码,而windows是gbk编码,所以会出现上面的乱码问题. 解决mysql导入导出数据乱码问题 首先要做的是要确定你导出数据的编码格式,使用mysqldump的时候需要加上--default-character-set=utf8, 例如下面的代码: mysqldump

  • 在linux中导入sql文件的方法分享(使用命令行转移mysql数据库) 2013-11-04

    为使用阿里云主机,没有装ftp,也没有装phpmyadmin,所以一切都得靠命令行.转移网站的重要一步就是转移数据库,这里简单介绍一下如何在这种情况下导入sql文件 因导出sql文件 在你原来的网站服务商处利用phpmyadmin导出数据库为sql文件,这个步骤大家都会,不赘述. 上传sql文件 前面说过了,我们没有在云主机上安装ftp,怎么上传呢? 打开ftp客户端软件,例如filezilla,使用服务器IP和root及密码,连接时一定要使用SFTP方式连接,这样才能连接到linux.注意,这

  • Mysql导出导入说明 2014-07-22

    必要知识: mysql编码: 在mysql的安装目录,如: E:\Program Files\MySQL\MySQL Server 5.0\my.ini 可以找到mysql库的编码,大部分情况下,可以设置为uft-8: default-character-set=utf8 或gbk: default-character-set=gbk 编码不对,就会造成无法导入.修改编码后要重启数据库才会生效. 1.条件:在同一台服务器, mysql数据库可以用平台的导出导入功能正常备份及还原. 2.条件:不同

  • mysql导入数据大小设置方法 2013-01-10

    MySQL导入数据库文件最大限制2048KB和phpmyadmin导入数据最大限制2048KB的解决方法 解决办法: 1.打开php.ini.找到 upload_max_filesize . memory_limit . post_max_size 这三个参数! (在默认的情况下,php只允许最大的上传数据为2M,也就是2048KB,而极限的最大使用内存memory_limit也仅为128M,Post的最大也为2M) 2.按您的服务器的实际性能配置进行如下改动:(注意:以下是按我的服务器性能和硬

  • python使用Flask框架获取用户IP地址的方法 2013-10-04

    这篇文章主要介绍了python使用Flask框架获取用户IP地址的方法,实例分析了Python使用Flask框架remote_addr获取IP的技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了python使用Flask框架获取用户IP地址的方法.分享给大家供大家参考.具体如下: 下面的代码包含了html页面和python代码,非常详细,如果你正使用Flask,也可以学习一下最基本的Flask使用方法. python代码如下: from flask import Flask, rend

  • php将csv文件导入到mysql数据库的方法 2014-01-11

    这篇文章主要介绍了php将csv文件导入到mysql数据库的方法,通过读取csv文件到数组再调用while循环实现插入数据到数据库,是非常实用的技巧,需要的朋友可以参考下 本文实例讲述了php将csv文件导入到mysql数据库的方法.分享给大家供大家参考.具体分析如下: 本程序实现数据导入原理是先把csv文件上传到服务器,然后再通过php的fopen与fgetcsv文件把数据保存到数组,然后再用while把数据一条条插入到mysql数据库,代码如下: <?php $fname = $_files

  • Python批量修改文件后缀的方法 2014-01-24

    这篇文章主要介绍了Python批量修改文件后缀的方法,有需要的朋友可以参考一下 近期下载了很多各种教程, 但是不幸的是后缀名都是 ".mp4", 而本人喜欢 ".rmvb" 后缀,由于有轻微洁癖, 受不了后面的 ".mp4" 缀, 但是手动修改又太过繁琐, 所以用近期刚学的 Python 来偷懒吧 ! : ) 如图为程序运行前的文件名 我们要做的呢, 就是在当前目录下,新建一个python文件, 如上图 demo2.py 然后用编辑器打开敲入如下

  • mysql误删root用户恢复方法 2014-02-06

    这篇文章主要介绍了mysql误删root用户恢复方法,本文操作是在mysql5.5版本下完成,其它版本仅作参考,需要的朋友可以参考下 装完数据库清理一些默认账号的时候不小心把root删除了,flush privileges 之后的新 root 忘了grant任何权限,查看mysqld选项里面有个 −−skip-grant-tables #/usr/libexec/mysqld --verbos --help mysql5.5手册说明如下 复制代码 代码如下: --skip-grant-table

  • python根据路径导入模块的方法 2014-02-23

    这篇文章主要介绍了python根据路径导入模块的方法,分析了传统方法与改进方法,具有一定的实用价值,需要的朋友可以参考下 本文实例讲述了python根据路径导入模块的方法,分享给大家供大家参考.具体方法如下: 常规做法如下: import sys sys.path.append('C:/full/path') from foo import util,bar 而要直接通过路径 import imp util = imp.load_source('util', 'C:/full/path/foo/

  • python通过正则查找微博@(at)用户的方法 2014-06-03

    这篇文章主要介绍了python通过正则查找微博@(at)用户的方法,涉及Python正则匹配的技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了python通过正则查找微博@(at)用户的方法.分享给大家供大家参考.具体如下: 这段代码用到了python正则的findall方法,查找所有被@的用户,使用数组形式返回用户昵称 import re users = re.findall(r'@([\u4e00-\u9fa5\w\-]+)','nihao @dfugo @jb51 haha

  • MySQL 导入慢的解决方法 2014-09-15

    MySQL导出的SQL语句在导入时有可能会非常非常慢,在导出时合理使用几个参数,可以大大加快导 入的速度. 导入注意点:使用phpmyadmin或navicat之类的工具的导入功能还是会相当慢,可以直接使用mysql进行导入 导入命令如下:mysql> -uroot -psupidea jb51.net<E:\www.jb51.net.sql便可以了 说明:mysql> -umysql用户名 -pmysql密码 要导入到的数据库名<要导入MYSQL的SQL文件路径 这样导入将会非常