通常情况下,在部署 DataEase 时默认使用 root 特权用户连接数据库 MySQL,但在审计较为严格的环境中,不允许使用特权用户连接数据库。
本篇文章将介绍将 DataEase 的 MySQL 数据库单独部署时使用非特权用户进行连接的配置方法。
1 使用外部数据库设置 {#1-%E4%BD%BF%E7%94%A8%E5%A4%96%E9%83%A8%E6%95%B0%E6%8D%AE%E5%BA%93%E8%AE%BE%E7%BD%AE}
请自行在其它服务器安装 MySQL,DataEase V2 只能使用 MySQL 8.X 版本,推荐使用 MySQL 8.3 版本。同时 DataEase 对数据库部分配置项有要求,请参考下附的数据库配置,修改环境中的数据库配置文件
[mysqld]
datadir=/var/lib/mysql
default-storage-engine=INNODB
character_set_server=utf8
lower_case_table_names=1
table_open_cache=128
max_connections=2000
max_connect_errors=6000
innodb_file_per_table=1
innodb_buffer_pool_size=1G
max_allowed_packet=64M
transaction_isolation=READ-COMMITTED
innodb_flush_method=O_DIRECT
innodb_lock_wait_timeout=1800
innodb_flush_log_at_trx_commit=0
sync_binlog=0
group_concat_max_len=1024000
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
skip-name-resolve
\[mysql\]
default-character-set=utf8
`[mysql.server]
default-character-set=utf8`
特别注意以下几个参数的设置:
character_set_server=utf8
lower_case_table_names=1
group_concat_max_len=1024000
创建 DataEase 使用的数据库,DataEase 服务启动时会自动在配置的库中创建所需的表结构及初始化数据
-- 创建数据库
CREATE DATABASE `dataease` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
创建用户及用户授权
-- 创建用户
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
-- 授予权限
GRANT ALL PRIVILEGES ON dataease.\* TO 'username'@'%';
`-- 刷新权限
FLUSH PRIVILEGES;`
如果 DataEase 已经部署完成,MySQL 默认采用容器的方式运行,此时,如果想将数据库切换为外置的数据库,在执行下面的操作前,需要先进行数据迁移操作,参考第 4 步。
2 修改 DataEase 配置文件 {#2-%E4%BF%AE%E6%94%B9-dataease-%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6}
DataEase 支持以配置文件的形式来设置安装参数,如安装目录、服务运行端口、数据库配置参数等,具体参数请参见安装包中的 install.conf 文件:
vim /opt/dataease-online-installer-v2.0.0/install.conf
(dataease-online-installer-v2.0.0 为示例安装包目录名称,操作时可根据实际安装包名称替换)
参考以下配置改为实际环境的配置信息,修改数据库地址、用户名、密码信息:
# 基础配置
## 安装目录
DE_BASE=/opt
## Service 端口
DE_PORT=8100
## 登录超时时间,单位min。如果不设置则默认8小时,也就是480
DE_LOGIN_TIMEOUT=480
## 安装模式,community | enterprise
DE_INSTALL_MODE=enterprise
数据库配置
=====
是否使用外部数据库
---------
DE_EXTERNAL_MYSQL=false
数据库地址
-----
DE_MYSQL_HOST=192.168.1.100
DataEase 数据库库名
--------------
DE_MYSQL_DB=dataease
数据库用户名
------
DE_MYSQL_USER=username
数据库密码
-----
DE_MYSQL_PASSWORD=password
数据库参数
-----
`DE_MYSQL_PARAMS="autoReconnect=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true"`
3 执行安装脚本 {#3-%E6%89%A7%E8%A1%8C%E5%AE%89%E8%A3%85%E8%84%9A%E6%9C%AC}
# 进入安装包目录(dataease-online-installer-v2.0.0 为示例安装包目录名称,操作时可根据实际安装包名称替换)
cd dataease-online-installer-v2.0.0
运行安装脚本
======
`/bin/bash install.sh`
安装成功后,通过浏览器访问如下页面登录:
-
访问地址 : http://目标服务器IP地址:服务运行端口
-
登录用户名: admin
-
登录密码: DataEase@123456
4 数据迁移 {#4-%E6%95%B0%E6%8D%AE%E8%BF%81%E7%A7%BB}
备份源数据库数据
# 停掉dataease服务
docker stop dataease
进入 mysql-de 容器
==============
docker exec -it mysql-de sh
备份数据
====
mysqldump -uroot -pPassword123@mysql --max_allowed_packet=512M dataease \>\> /opt/mysql-dataease.sql
备份函数 -ntd 是表示导出存储过程;-R是表示导出函数
=============================
mysqldump -uroot -pPassword123@mysql -ntd -R dataease \> /opt/mysql-function.sql
退出容器
====
exit
将上面容器中两个sql 复制到 /opt/ 目录下
=========================
`docker cp mysql:/opt/mysql-dataease.sql /opt/
docker cp mysql:/opt/mysql-function.sql /opt/`
将备份的数据导入目标数据库
# 将备份的文件传输到目标数据库服务的 /opt 目录下,备份的文件在 dataease 服务器中:/opt/mysql-dataease.sql、/opt/mysql-function.sql
登录目标服务器的 MySQL 数据库
==================
mysql -uroot -pxxxxxxx
导入数据
====
use dataease;
source /opt/mysql-dataease.sql;
导入函数
====
`source /opt/mysql-function.sql;`