mysql数据导入到Doris,数据没有导入成功或提示{“msg“:“Unauthorized“,“code“:401,“data“:“Access denied for root@...
mysql数据导入到Doris
项目场景:
操作内容:mysql数据先以csv格式(,分隔)导出到本地,然后导入到Doris
参考文献:开始使用 - 基础使用指南 - 《Apache Doris 0.12 官方中文文档》 - 书栈网 · BookStack
问题描述
提示:通过
Stream load导入数据时报错
例如:
1、本地iTerm先访问到localfile.csv文件所在目录
2、执行以下语句:curl --location-trusted -u root -T localfile.csv -H "label:testdori" -H "column_separator:," -XPUT http://doris_ip:port/api/doris_database/table_name/_stream_load
3、要求我输入密码:Enter host password for user 'root': ---注意因为我的doris,root用户初始化没有密码,所以随便输入一个结果回车即可。
3、现象:
Warning: Binary output can mess up your terminal. Use "--output -" to tell
Warning: curl to output it to your terminal anyway, or consider "--output
虽然只是warning,但数据依然没有从本地导入到doris对应表中。
原因分析:
原因1:我用错port了,应该用8030,但我用了链接数据库的9030
原因2:我是用root权限用户去导入数据的,但根据官方文档提示,root权限:root 用户,允许从任意节点登陆,角色为 operator,所以我猜测意思是没有读写权限。
于是我用root创建了个用户进行测试
过程如下:
1)创建用户:
CREATE USER 'test' IDENTIFIED BY '123456';--
test账户创建完成,密码是123456.此时执行
curl --location-trusted -u test:123456 -T localfile.csv -H "label:testdori" -H "column_separator:," -XPUT http://doris_ip:8030/api/doris_database/table_name/_stream_load
- 错误信息就很具体了,如下:
- {"status":"FAILED","msg":"Access denied; you need (at least one of) the Admin_priv Load_priv privilege(s) for this operation"}%
解决方案:
那么基于上述测试,只要将我创建的
test授予对应权限即可,具体如何授权又看了一遍官方文档,继续操作如下:
1.登录到doris控制台:
mysql -h FE_HOST(即doris链接的ip) -P9030 -uroot
2.show databases; 展示所有doris下的database名称
3.use xxx;xxx指你建表的database名称。
4.最后执行:GRANT ALL ON database_name(被授权的database名称) TO test(被授权的用户名);
--意思为:test账户创建完成之后,可以通过 root/admin 账户将 具体某个database 读写权限授权给普通账户 test。授权之后采用 test 账户登录就可以操作 那个database 数据库了。
最后再执行语句即可成功。这下数据量大也可以轻松导入啦!
如下:curl --location-trusted -u test:123456 -T localfile.csv -H "label:testdori" -H "column_separator:," -XPUT http://doris_ip:8030/api/doris_database/table_name/_stream_load
注意:
1)-XPUT后的ip是访问doris数据库的ip,但
HOST 一般是8030 ,为 fe.conf 中的 http_port。必须注意这个host不是链接数据库时填写的默认端口号9030!再报错可以先查一下配置,确认端口号。判断port对错可以访问下doris网页,如果能访问成功,说明ip是对的。例如:http://ip:8030/Playground
2)提示:{"msg":"Unauthorized","code":401,"data":"Access denied for root@...}
原因:
1.用导入了权限不足的root账户,解决方案参考上述步骤创建新的用户,授权读写操作即可。
更多推荐
所有评论(0)