虚拟机linux superset 连接 windows数据库(源码级别配置)
虚拟环境:linux版本 centos7.0,python2.7(3.5、3.6应该也可以)python需要 下载pymysql包
最近想玩superset,但是 虚拟机搞了一整天 才整明白怎么连接数据库,特此整理下,希望对初学者有所帮助,如有问题,欢迎指正!
1.linux中修改superset 包下的 config.py配置
注:config.py路径 :/root/superset/ck/lib/python2.7/site-packages/superset/
[[email protected] ~]# cd /root/ck_superset/ck/lib/python2.7/site-packages/superset/
[[email protected] ~]# vim config.py
因为superset默认sqlite连接,故需修改并放开62行注释(即打开mysql方式),mysql连接为:
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:[email protected]:3306/mayibase?charset=utf8'
注意格式: 'mysql+pymysql://数据库用户名:密码@192.168.0.106:3306/数据库名?charset=utf8' ,
其中ip地址是所需连接数据库的地址;charset是根据数据库的编码方式决定,一般为utf8
注意:此处ip为windows网卡ip(连接哪里的数据库,就写哪个数据库的 ip,不是虚拟机ip!)
2.重新创建管理员用户名和密码
执行 #fabmanager create-admin --app superset
此处若提示缺少pymysql包,需先下载pip install pymysql
若提示pymysql错误,则请看下面注意内容。
注意:这里连接windows的mysql数据库,则需要windows数据库开放远程连接功能,因为mysql默认只允许本地连接。
windows mysql开放远程连接方法:
打开cmd,进入mysql.exe 目录(默认安装则为C:\Program Files\MySQL\MySQL Server 5.6\bin),如图
然后继续执行下面步骤
●新建用户远程连接mysql数据库
grant all on *.* to [email protected]'%' identified by 'root' with grant option;
flush privileges;
允许任何ip地址(%表示允许任何ip地址)的电脑用admin帐户和密码(root)来访问这个mysql server。
注意:命令结尾要加分号!admin账户不一定要存在。
查询账户结果,若修改成功,则root 后边为 %,表示任何ip地址可连接
select user,host from user;
然后再回到 linux中,执行#fabmanager create-admin --app superset 创建账户
成功创建用户则在linux提示:
3.linux中初始化
(1)初始化Superset
#superset db upgrade
(2)创建默认角色和权限
#superset init
4.linux中启动服务Superset
#superset runserver -d -p 8088
5.打开windows浏览器 ,输入ip :8088 登陆后,左上角数据源,即可看到连接到mysql