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. Speex Acoustic Echo Cancellation (AEC) 回声消除模块的使用

    背景:回声与啸叫的产生  http://blog.csdn.net/u011202336/article/details/9238397 参考资料:  http://www.speex.org/doc ...

  2. java.lang.IllegalArgumentException: Wrong FS ...异常的解决

    配置完Hbase后,启动,JPS发现少了HMaster这个进程.查看了一下日志如下: java.lang.IllegalArgumentException: Wrong FS: hdfs://192. ...

  3. 定义文件XML——从简单开始

    本文纯属个人见解,是对前面学习的总结,如有描述不正确的地方还请高手指正~ 通过看XML讲授的视频,算是对XML有了简略的认识,原本不盘算写这篇博客,但无法原来视频讲授的内容就少,再不踊跃写些东西,过不 ...

  4. jvm回收方法区

    很多人认为方法区(或者HotSpot虚拟机中的永久代)是没有垃圾收集的,Java虚拟机规范中确实说过可以不要求虚拟机在方法区实现垃圾收集,而且在方法区进行垃圾收集的“性价比”一般比较低:在堆中,尤其是 ...

  5. Android 性能优化——内存篇

    一.android官方一些内存方面的内存tips 1.避免创建不必要的对象. 如尽量避免字符串的加号拼接,可以使用StringBuilder来拼接. 如果需要TextView设置多个字符串片段,可以使 ...

  6. 使用多个DNS供应商以缓解DDoS攻击

        随着不安全物联网(IoT)设备的激增,针对域名系统(DNS)供应商的分布式拒绝服务(DDoS)攻击在数量和规模上正在不断增加.这些攻击随之影响依赖于这些供应商进行域名解析的网站.虽然DNS供应 ...

  7. 1 Selenium打开浏览器

    [环境] Selenium3.0.1+Python3.6+unittest win7+IE10 1.打开FireFox浏览器 import unittest from selenium import ...

  8. maven自定义骨架

    Maven 的 archetype 技术,为新建标准化的工程框架提供了方便.为自定义一套工程框架标准,可参考以下步骤操作: 1,创建一个项目的原型 2,在项目根目录执行命令:mvn archetype ...

  9. Docker集群实验环境布署--swarm【3 注册服务监控与自动发现组件--consul】

    参考官网集群配置方式 https://hub.docker.com/r/progrium/consul/   集群中需要manager与node能通信consul的发现服务,不然,管理节点选举不了,无 ...

  10. Docker集群实验环境布署--swarm【1 架构说明】

    在读完<Docker技术入门与实践>这本书后,基本上已对Docker了有一些入门的理解,以及我们为什么要使用Docker 答:我们发现在实际工作中,通过openstack一旦把一个VM创建 ...