ClickHouse创建MySql引擎报错(Code: 501)

日常踩坑,记录问题解决思路及过程!

最近工作中用到ClickHouse,并且需要同步MySql数据库中的数据,因此就想到使用ClickHouse的MySql数据库引擎,结果“勇敢的少年,倒在了第一步”。在ClickHouse客户端执行下面的Sql时报错了

CREATE DATABASE practice ENGINE = MySQL('IP:PORT','practice','用户名', '密码');

报错信息如下:

Received exception from server (version 21.6.3):

Code: 501. DB::Exception: Received from localhost:9000. DB::Exception: Cannot create MySQL database, because Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Exception: Connections to all replicas failed: practice@192.168.164.78:3306 as user root,

说明:ClickHouse是在本机适用Docker安装,MySql是在本机直接安装。 

看到报错后,第一反应是Docker容器与本机网络不同(事实这个猜想是错误的😂),但是为了排除这个原因,必须得坚持验证一下,这样才能说服自己,再去找其他原因。

对于程序员来说,验证网络是否通,那不是小菜一碟,直接干! telnet

哎,Docker容器中竟然没有安装telnet,好吧!自己安装一下

apt-get update
apt-get install  telnet 

两行命令搞定!执行telnet

 到这里,网络不通猜想明显是错误的。其实回头想想,也不可能是网络的问题,同一台物理机,肯定是不存在网络的问题。

telnet没有到原因,但是看到下面重要的信息

GHost '192.168.164.78' is not allowed to connect to this MySQL serverConnection closed by foreign host.

 翻译过来的大概意思:MySql服务不允许外部主机(foreign host)访问。

一下子,就明朗了。原来是Mysql服务权限设置的问题导致的,依稀的记得当初在安装mysql好像是有设置过用户、IP权限的。查阅资料,需要修改用户、IP权限。

可以从mysql库中的user表看到,目前只有localhost这一个host授权,那要解决问题,只需要给相关用户和IP授权即可。

创建用户并指定多IP访问
1. 创建用户并设置密码模式

CREATE USER '用户名'@'IP' IDENTIFIED WITH mysql_native_password BY '密码';

2.给创建的账号赋权

GRANT ALL PRIVILEGES ON *.* TO '用户名'@'ip';

如果需要指定权限,就将ALL改为SELECT DELETE UPDATE INSERT等四种权限任选即可;另外可以将IP替换为'%',表示所有IP授权。

修改权限后,执行创建MySql引擎。

 执行成功!

感谢阅读!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值