1、cuckoo版本升级

cuckoo默认的数据库为sqlite,默认连接方式为sqlite:///os.path.join(REPORT_ROOT, "db", "cuckoo.db")

升级cuckoo版本需要升级数据库版本,各个cuckoo版本的数据库有对应字段的修改,每个cuckoo版本的数据库有对应的

SCHEMA_VERSION,定义在lib/cuckoo/core/database.py中,因此升级cuckoo首先需要将数据库内容进行更新(主要是一些字段的改变和表内容的更新),方法:cd utils/db_migration/ && alembic upgrade head

2、数据库变更

通过查看cuckoo.conf配置文件,cuckoo目前主要支持三种形式的数据库sqlite、postgresql、mysql

cuckoo中对数据库进行判断,如果虚拟机数量大于1并且数据库类型为sqlite,那么并行处理任务可能会有一些问题

2.1、切换mysql

1、安装mysql(略过)

mysql> select version();
+------------+
| version()  |
+------------+
| 5.6.24-log |

+------------+

2、创建cuckoo数据库

mysql –uroot –ppassword 进入mysql数据库

create database cuckoo;  数据库路径在/polydata/data/db/mysql

查看数据库:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cuckoo             |
| mysql              |
| performance_schema |
| polydata           |
+--------------------+

3、修改配置文件

cuckoo.conf—>database—>connection =  mysql://root:password@localhost/cuckoo

4、安装MySQLdb模块

sudo apt-get install python-mysqldb

python交互命令中如果能import MySQLdb则安装成功

如果未安装或安装失败,会报导入数据库驱动问题

raise CuckooDependencyError("Missing database driver, unable to import %s (install with `pip install %s`)" % (lib, lib))

5、解决不能通过mysql .sock连接MySQL问题

现象:Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

解决方法:ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock

reference:http://blog.csdn.net/ixidof/article/details/5958904

至此cuckoo就可以使用mysql数据库,如果出现CuckooDatabaseError,即

"DB schema version mismatch: found {0}, expected {1}. "
"Try to apply all migrations (cd utils/db_migration/ && "
"alembic upgrade head).".format(last.version_num, SCHEMA_VERSION))
原因:数据库中会有一个字段alembic_version,其中的version_num就是定义的SCHEMA_VERSION,通过此内容来判断不同的cuckoo版本,如果安装了高版本的cuckoo,现在想使用低版本的cuckoo,则只能先删除该数据库或者直接更改该数据库的version_num

删除数据库:drop database cuckoo;

 

2.2、切换postgresql

1、安装postgresql

apt-get install postgresql

sudo passwd postgres  #修改postgres密码

版本:postgres=# select version();

                                                  version                                                 
-----------------------------------------------------------------------------------------------------------

PostgreSQL 9.3.9 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4, 64-bit

2、创建cuckoo数据库

sudo -u postgres psql  #其中,sudo -u postgres 是使用postgres 用户登录的意思

postgres=# create database cuckoo; #创建cuckoo database

查看数据库:\l

postgres=# \l

                                  List of databases

   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges  
-----------+----------+----------+-------------+-------------+-----------------------

cuckoo    | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |

postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |

template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +

           |          |          |             |             | postgres=CTc/postgres

template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +

           |          |          |             |             | postgres=CTc/postgres

(4 rows)

常用命令:\l 查看系统中现存的数据库

                   \c database1 切换到database1

                   \dt 查看表             

3、修改配置文件

cuckoo.conf—>database—>connection =  postgresql://postgres:polydata@localhost:5432/cuckoo

4、安装psycopg2模块

sudo apt-get install python-psycopg2

python交互命令中如果能import psycopg2则安装成功

如果未安装或安装失败,会报导入数据库驱动问题

raise CuckooDependencyError("Missing database driver, unable to import %s (install with `pip install %s`)" % (lib, lib))
5、修改db user postgres 密码
问题:启动cuckoo时出现FATAL: password authentication failed for user "postgres"
原因:首先有两个账户概念,DB User和OS User,sudo passwd postgres修改的是OS User:postgres的password,而默认DB User:postgres的密码仍为空,因此需要修改DB User:postgres的密码
sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'password';"

 

cuckoo数据库变更的更多相关文章

  1. 使用 dbdeploy.net 管理数据库变更

    使用 dbdeploy.net 管理数据库变更 没有包含数据库的持续集成都是假的.这可不是我说的.一直以来都没能找到一个理想的数据库变更管理工具.直到转了 java 再回来,才发现 dbdeploy ...

  2. mysql数据库变更监控(canal)

    背景: 1. 一些项目的基础功能会有Audit Trace, 以记录系统用户所做过的所有记录. 2. 实时备份数据,比如mysql主从复制,一个用于面向应用,一个用于对应用数据库的实时备份. 3. 实 ...

  3. 使用SQL Server Audit记录数据库变更

        最近工作中有一个需求,就是某一个比较重要的业务表经常被莫名其妙的变更.在SQL Server中这类工作如果不事前捕获记录的话,无法做到.对于捕获变更来说,可以考虑的选择包括Trace,CDC. ...

  4. DBHelper (支持事务与数据库变更)

    1 概述 更新内容:添加 "支持数据分页" 这个数据库操作类的主要特色有 1>     事务操作更加的方便 2>     变更数据库更加的容易 3>  支持数据分 ...

  5. 知方可补不足~用CDC功能来对数据库变更进行捕捉

    回到目录 如果我们希望监视一个数据表的变化,在sql2008之前的版本里,在数据库端可能想到的只有触发器,或者在程序端通过监视自己的insert,update,delete来实现相应的功能,这种实现无 ...

  6. DBHelper (支持事务与数据库变更) z

    using System; using System.Data; using System.Data.Common; using Project.BaseFramework; using System ...

  7. 生产环境中,数据库升级维护的最佳解决方案flyway

    官网:https://flywaydb.org/ 转载:http://casheen.iteye.com/blog/1749916 1.  引言 想到要管理数据库的版本,是在实际产品中遇到问题后想到的 ...

  8. flask-admin章节三:数据库迁移工具 alembic初步使用

    1. 概述 基于flask框架构建web,一般会使用sqlchemy(在flask中使用sqlchemy可以参考这里)作为数据库引擎. 这样业务的逻辑就可以做到不跟具体的数据库类型相耦合,具体后端业务 ...

  9. 使用Source Safe for SQL Server解决数据库版本管理问题

    简介     在软件开发过程中,版本控制是一个广为人知的概念.因为一个项目可能会需要不同角色人员的参与,通过使用版本控制软件,可以使得项目中不同角色的人并行参与到项目当中.源代码控制使得代码可以存在多 ...

随机推荐

  1. 图的匹配问题与最大流问题(三)——最大流问题Ford-Fulkerson方法Java实现

    上篇文章主要介绍了Ford-Fulkerson方法的理论基础,本篇给出一种Java的实现. 先借助伪代码熟悉下流程 FORD-FULKERSON(G,t,s) 1 for each edge(u,v) ...

  2. 从零开始学C++之构造函数与析构函数(一):构造函数、析构函数、赋值与初始化、explicit关键字

    一.构造函数.默认构造函数 (1).构造函数 构造函数是特殊的成员函数 创建类类型的新对象,系统自动会调用构造函数 构造函数是为了保证对象的每个数据成员都被正确初始化 函数名和类名完全相同 不能定义构 ...

  3. eclipse中svn插件的安装和tortoiseSVN的安装

    在项目的开发中一般都需要用到版本控制,其中用的比较多的就是svn(subVersion),svn的使用既可以以插件的形式,也可以以客户端的形式使用.今天就介绍一下eclipse中svn插件的2种安装方 ...

  4. linux一句话问答(网络无关篇+网络相关篇+程序开发篇+经典图书)

    一句话问答(网络无关篇+网络相关篇+程序开发篇+经典图书) --------------------------目录-网络无关篇-目录-------------------------- 0001 修 ...

  5. Kattis - Aaah!

    Aaah! Photo by Unknown Jon Marius shouted too much at the recent Justin Bieber concert, and now need ...

  6. Qt 富文本处理

    富文本处理 所有的类围绕 QTextDocument 展开, 它保证了用户可以创建和修改 富文本块, 而无须定义中间语言.一个 QTextDocument 可以通过两个接口操作, 一个是用于编辑的 C ...

  7. python学习-基础语法

    字符编码 1.python 2.x 默认是ASCII 编码 不支持中文,所以在代码有中文的时候 需要在文件最上一行加上#coding=utf-8.python 3.x则没有该问题. 变量命名规则 1. ...

  8. PAT甲级训练刷题代码记录

    刷题链接:https://www.patest.cn/contests/pat-a-practise 1001 #include <iostream> #include <stdio ...

  9. <hdu - 1272> 小希的迷宫 并查集问题 (注意特殊情况)

     本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 Problem Description: 上次Gardon的迷宫城堡小希玩了很久(见Probl ...

  10. CSS Hank兼容浏览器的

    color:red; /* 所有浏览器都支持 */ color:red !important; /* 除IE6外 */ _color:red; /* IE6支持 */ *color:red; /* I ...