FISCO BCOS的区块链数据,默认是通过RocksDB保存在磁盘中。如果希望把数据保存到MySQL数据库,可以先自行部署一个MySQL数据库。

 

一、安装mysql或者MariaDB数据库

1. 安装

此处以Centos安装MariaDB为例。MariaDB数据库是 MySQL 的一个分支,MariaDB完全兼容 MySQL,包括API和命令行。

// 安装
sudo yum install -y mariadb*

// 启动
sudo systemctl start mariadb.service

// 停止
// sudo systemctl stop  mariadb.service


// 设置开机启动
sudo systemctl enable mariadb.service

// 初始化
// 执行以下命令:
sudo mysql_secure_installation
// 以下根据提示输入:
// Enter current password for root (enter for none):<–初次运行直接回车
// Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
// New password: <– 设置root用户的密码
// Re-enter new password: <– 再输入一次你设置的密码
// Remove anonymous users? [Y/n] <– 是否删除匿名用户,回车
// Disallow root login remotely? [Y/n] <–是否禁止root远程登录,回车
// Remove test database and access to it? [Y/n] <– 是否删除test数据库,回车
// Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车


2. 授权访问和添加用户


// 使用root用户登录,密码为初始化设置的密码
mysql -uroot -p -h localhost -P 3306

// 授权root用户远程访问
mysql > GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql > flush PRIVILEGES;

// 创建test用户并授权本地访问
mysql > GRANT ALL PRIVILEGES ON *.* TO 'test'@localhost IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql > flush PRIVILEGES;

3. 测试连接和创建数据库

// 登录数据库
mysql -utest -p123456 -h localhost -P 3306

// 创建数据库,用来存储区块链的数据
mysql > create database blockchain;

 

二、修改区块链节点的配置文件

1. 将区块链节点停止

假如安装的的webase-front

启动: bash start.sh
停止: bash stop.sh
检查: bash status.sh 

参考文档:https://fintech.webank.com/developer/docs/webase/docs/WeBASE-Install/developer.html

FISCO BCOS 智能合约 可视化数据库 Mysql MariaDB_数据库操作

 

2. 修改节点的配置文件

群组配置文件通常位于区块链节点的配置目录下:conf/group.1.ini

FISCO BCOS 智能合约 可视化数据库 Mysql MariaDB_Mysql_02

将每个节点中的group.1.ini修改为如下信息

[storage]
    type=mysql
    db_ip=127.0.0.1
    db_port=3306
    db_username=数据库账户名,比如我的test
    db_name=数据库的名字,比如我的blockchain
    db_passwd=数据库账户密码,比如我的123456

参考文档:https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/articles/3_features/33_storage/data_chain_or_database.html?highlight=%E6%95%B0%E6%8D%AE%E5%BA%93#id3

3. 启动区块链

启动: bash start.sh

FISCO BCOS 智能合约 可视化数据库 Mysql MariaDB_数据库操作_03

三、在webase-front中编写创建数据表的智能合约

1. 代码

可以参考https://blog.csdn.net/u013288190/article/details/108824439

// 创建成绩表
function create() public onlyOwner returns(int){

		TableFactory tf = TableFactory(0x1001);
		int count = tf.createTable("stu_score", "student_id", "course_name, score");
		emit createEvent(msg.sender, "stu_score");
		return count;

}

2. 执行合约

FISCO BCOS 智能合约 可视化数据库 Mysql MariaDB_数据库操作_04

3. 效果

我们可以在命令行中进入到数据库查看

FISCO BCOS 智能合约 可视化数据库 Mysql MariaDB_数据库操作_05

FISCO BCOS 智能合约 可视化数据库 Mysql MariaDB_数据库操作_06

FISCO BCOS 智能合约 可视化数据库 Mysql MariaDB_Mysql_07