简单来讲,GHTorrent项目是对GitHub上所有和项目相关的公开操作数据的完整总结,具体可以参考这里的简介。应该说这个项目提供的数据对软件工程研究者还是很有价值的,这里简单介绍一下其数据导入过程。以一个新的ubuntu 16.04系统为例。这个页面中按照时间给出了MangoDB和MySQL的dump文件的下载连接:http://www.ghtorrent.org/downloads.html,我对MangoDB实在不熟悉,这里主要介绍MySQL dump文件的导入过程。
我首先安装MySQL,应该说ubuntu上安装MySQL是非常简单的,例如这里介绍的步骤:https://www.linuxidc.com/Linux/2017-05/143864.htm。
上面这个页面中给出了一个在GitHub上的导入脚本和简单说明页面,已经说得比较清楚了,这里就稍微补充一些注意事项:
安装好MySQL后,在终端中输入:
mysql -u root -p
然后输入安装时设置的密码。然后接下来依次输入:
create user ghtorrentuser@'localhost' identified by '1234';
create user ghtorrentuser@'*' identified by '1234';
create database ghtorrent_restore;
grant all privileges on ghtorrent_restore.* to 'ghtorrentuser'@'localhost';
grant all privileges on ghtorrent_restore.* to 'ghtorrentuser'@'*';
grant file on *.* to 'ghtorrentuser'@'localhost';
都很好理解,创建用户ghtorrentuser,并设置其密码为1234,使其能够访问创建的ghtorrent_restore数据库。
然后在终端中定位到下载压缩包解压后的目录,并按照前面的说明,输入:
./ght-restore-mysql -u ghtorrentuser -d ghtorrent_restore -p 1234
结果提示两个Warning和一个Error,两个Warning其实不用管,虽然我也针对两个Warning搞了半天。提示的Error是:
ERROR 1290 (HY000) at line 1: The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
其实这个报错也很好理解,简单来讲,就是存放dump文件的位置MySQL认为是不安全的,那么就应该设置让MySQL认为这里是这里导入的。和Windows中my.ini文件一样,我们需要找到MySQL在ubuntu中配置文件的位置,在这个位置:/etc/mysql/mysql.cnf,在终端中输入:
gedit /etc/mysql/mysql.cnf
希望对其进行编辑,发现是只读打开的,原因也很好理解,需要改变其权限:
sudo chmod 777 /etc/mysql/mysql.cnf
再通过gedit打开,在文件末尾加入:
[mysqld]
secure_file_priv=/home/quyu/mysql-2018-03-01/ #保存解压后文件夹的位置
保存后退出,其中制定了保存解压后文件夹的位置。由于我们之前更改了mysql.cnf文件的权限,还得改回来:
sudo chmod 644 /etc/mysql/mysql.cnf
需要再重启一下MySQL的服务:
sudo service mysql stop
sudo service mysql start
再重新运行上面的restore命令,发现错误提示变了,也说明我们刚才的更改起作用了:
ERROR 29 (HY000) at line 1: File '/home/quyu/mysql-2018-03-01/commit_comments.csv' not found (Errcode: 13 - Permission denied)
针对这个错误,参考网上其他朋友们的介绍,例如:https://www.cnblogs.com/zhangqunshi/p/6760746.html和http://blog.csdn.net/qq473179304/article/details/55145230,解决方法也比较直观,打开:/etc/apparmor.d/usr.sbin.mysqld 文件,在最末尾处加上类似于:
#include <local/usr.sbin.mysqld>
/home/quyu/ r, #这里是我个人的文件夹
/home/quyu/** rwk,
的配置,然后再重新运行上面的restore命令,发现就可以正常导入数据了。就先简单记录这么多。