cuckoo数据库变更
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 databasesName | 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数据库变更的更多相关文章
- 使用 dbdeploy.net 管理数据库变更
使用 dbdeploy.net 管理数据库变更 没有包含数据库的持续集成都是假的.这可不是我说的.一直以来都没能找到一个理想的数据库变更管理工具.直到转了 java 再回来,才发现 dbdeploy ...
- mysql数据库变更监控(canal)
背景: 1. 一些项目的基础功能会有Audit Trace, 以记录系统用户所做过的所有记录. 2. 实时备份数据,比如mysql主从复制,一个用于面向应用,一个用于对应用数据库的实时备份. 3. 实 ...
- 使用SQL Server Audit记录数据库变更
最近工作中有一个需求,就是某一个比较重要的业务表经常被莫名其妙的变更.在SQL Server中这类工作如果不事前捕获记录的话,无法做到.对于捕获变更来说,可以考虑的选择包括Trace,CDC. ...
- DBHelper (支持事务与数据库变更)
1 概述 更新内容:添加 "支持数据分页" 这个数据库操作类的主要特色有 1> 事务操作更加的方便 2> 变更数据库更加的容易 3> 支持数据分 ...
- 知方可补不足~用CDC功能来对数据库变更进行捕捉
回到目录 如果我们希望监视一个数据表的变化,在sql2008之前的版本里,在数据库端可能想到的只有触发器,或者在程序端通过监视自己的insert,update,delete来实现相应的功能,这种实现无 ...
- DBHelper (支持事务与数据库变更) z
using System; using System.Data; using System.Data.Common; using Project.BaseFramework; using System ...
- 生产环境中,数据库升级维护的最佳解决方案flyway
官网:https://flywaydb.org/ 转载:http://casheen.iteye.com/blog/1749916 1. 引言 想到要管理数据库的版本,是在实际产品中遇到问题后想到的 ...
- flask-admin章节三:数据库迁移工具 alembic初步使用
1. 概述 基于flask框架构建web,一般会使用sqlchemy(在flask中使用sqlchemy可以参考这里)作为数据库引擎. 这样业务的逻辑就可以做到不跟具体的数据库类型相耦合,具体后端业务 ...
- 使用Source Safe for SQL Server解决数据库版本管理问题
简介 在软件开发过程中,版本控制是一个广为人知的概念.因为一个项目可能会需要不同角色人员的参与,通过使用版本控制软件,可以使得项目中不同角色的人并行参与到项目当中.源代码控制使得代码可以存在多 ...
随机推荐
- Linux设备驱动开发详解-Note(11)--- Linux 文件系统与设备文件系统(3)
Linux 文件系统与设备文件系统(3) 成于坚持,败于止步 sysfs 文件系统与 Linux 设备模型 1.sysfs 文件系统 Linux 2.6 内核引入了 sysfs 文件系统,sysfs ...
- 使用 IDEA 创建 Maven Web 项目 (四)- 让 WEB 应用跑起来
在 IDEA 中配置 Tomcat 单击 IDEA 工具栏上的 Edit Configurations... (在一个下拉框中),弹出 Run/Debug Configurations 对话框. 单击 ...
- .Net多线程编程—同步机制
1.简介 新的轻量级同步原语:Barrier,CountdownEvent,ManualResetEventSlim,SemaphoreSlim,SpinLock,SpinWait.轻量级同步原语只能 ...
- Swift之父Chris Lattner将从Apple离职,加入特斯拉
1月10日,Swift编程语言之父 Chris Lattner 在 swift-evolution 邮件列表中宣布,他将于本月底离开 Apple,Ted Kremenek 将接替他成为 Swi ...
- GourdScan & sqlmapapi
0x01 Windows下配置GourdScan 0x0101 GourdScan项目地址:https://github.com/code-scan/GourdScan PHP环境 + ...
- D3.js:坐标轴
坐标轴: 是可视化图表中经常出现的一种图形,由一些列线段和刻度组成.坐标轴在 SVG 中是没有现成的图形元素的,需要用其他的元素组合构成.D3 提供了坐标轴的组件,如此在 SVG 画布中绘制坐标轴变得 ...
- Linux学习-文件和目录管理
Linux文件和目录管理 文件系统架构 1.Linux文件系统具有层级性 1)文件或者目录起始于根目录"/"成为树状结构 2)最顶层由/开始 2 ...
- Thread.Sleep(0) vs Sleep(1) vs Thread.Yeild()
注:本文为个人学习摘录,原文地址:http://www.cnblogs.com/stg609/p/3857242.html 本文将要提到的线程及其相关内容,均是指 Windows 操作系统中的线程,不 ...
- python3 获取阿里云ECS 实例及监控的方法
#!/usr/bin/env python3.5 # -*- coding:utf8 -*- try: import httplib except ImportError: import http.c ...
- shrio初体验(2)Realm
Realm:域,Shiro从从Realm获取安全数据(如用户.角色.权限),就是说SecurityManager要验证用户身份,那么它需要从Realm获取相应的用户进行比较以确定用户身份是否合法:也需 ...