Metabase 是一款开源免费的 BI 工具:连上一个数据库后,不懂 SQL 的同事也能点选出图表、看懂业务数据。这里记一次在 CentOS 上的完整部署,最后用 Nginx 反代去掉端口号。
它适合与不适合的场景
优点:开源免费、轻量、依赖和配置都简单、上手门槛低、支持对外共享和权限控制,Question 建图表方便,Dashboards 界面整洁。短板也要心里有数:Question 一次只能查一张表,切表后已有查询选项会重置;写过 SQL 的 Native query 模式转不回点选模式;不能在界面里改字段属性;图表类型偏单一。对比 Tableau:后者客户端和 Server 都要付费,viewer 按人头收费,如果只是给同事看几个图表,每月为此付上百美金不值。支持的数据库包括 Postgres、MySQL、Druid、SQL Server、Redshift、MongoDB、Google BigQuery、SQLite、H2、Oracle、Vertica、Presto、Snowflake、SparkSQL。
部署步骤
1. 装 JDK
JDK 版本必须不低于 1.8。
[root@metabase soft]# ls
jdk-8u231-linux-x64.rpm
[root@metabase soft]# rpm -ivh jdk-8u231-linux-x64.rpm
[root@metabase soft]# java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)
2. 下载程序
[root@metabase soft]# wget http://downloads.metabase.com/v0.34.0/metabase.jar
3. 装 MySQL 做元数据库
Metabase 默认用 H2,生产环境不稳定,官方建议换成其他数据库,这里用 MySQL。先卸载系统自带的 MariaDB:
[root@metabase soft]# rpm -qa | grep mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64
[root@metabase soft]# rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64 –nodeps
安装 MySQL:
[root@metabase soft]# rpm -ivh mysql-community-*

启动并设置开机自启:
[root@metabase soft]# systemctl start mysqld
[root@metabase soft]# systemctl enable mysqld
初始 root 密码在 mysqld.log 里,拿到后改成自己的:
//查看默认密码
[root@metabase soft]# cat /var/log/mysqld.log |grep password
mysql> set global validate_password_policy=0;
mysql> set global validate_password_number_count=0;
mysql> set global validate_password_special_char_count=0;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'dqz123456';
mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'dqz123456';
mysql> grant all privileges on *.* to root@'%';
建库:
mysql> CREATE DATABASE `metabase` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
4. 让 Metabase 指向 MySQL
在 /etc/profile 里导出连接参数:
[root@metabase soft]# vim /etc/profile
export MB_DB_TYPE=mysql
export MB_DB_DBNAME=metabase数据库
export MB_DB_PORT=mysql端口
export MB_DB_USER=mysql用户
export MB_DB_PASS=mysql密码
export MB_DB_HOST=mysql机器ip
[root@metabase soft]# source /etc/profile

5. 启动与放行端口
[root@metabase soft]# nohup java -jar metabase.jar > metabase.log 2>&1 &
Metabase 默认监听 3000,防火墙放通:
//metabase默认监听端口是3000
[root@metabase soft]# firewall-cmd --permanent --zone=public --add-port=3000/tcp
[root@metabase soft]# firewall-cmd --reload
6. 初始化页面
浏览器访问 http://IP地址:3000,按引导填数据库连接、管理员账号,完成后如下:






配置 Nginx 反向代理
装 Nginx:
[root@metabase soft]# rpm -ivh nginx-1.16.1-1.el7.ngx.x86_64.rpm
把默认站点的 location / 指到 3000:
[root@metabase soft]# vim /etc/nginx/conf.d/default.conf
...
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60;
proxy_read_timeout 600;
proxy_send_timeout 600;
}
...
启动:
[root@metabase ~]# systemctl start nginx
[root@metabase ~]# systemctl enable nginx
//放通80端口
[root@metabase ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp
[root@metabase ~]# firewall-cmd --reload
之后用 IP 或域名直接访问,不用再带 3000 端口。
注意事项
这是当时用 v0.34.0 的部署记录,新版本的环境变量名和引导页可能不同;换元数据库后重启前记得 source 过 profile,否则 Metabase 还会去找 H2;反代上线后如果要对外,别忘了加认证或 HTTPS。
















暂无评论内容