你遇到的问题
原因
host表示可以登录的ip, 这里root用户是localhost表示只能本地登录,不能远程登录, 想要远程登录的话需要执行:
update user set host =‘%’ where user =‘root’;
grant_priv表示是否具有赋权的能力, 默认只有root用户有, 如果你登录的是zhushanglin用户, 它并没有赋权的能力, 你用该用户创建新用户canal并想让canal有赋权的能力是不行的, 因为zhushanglin这个用户本来就没有赋权的能力, 他创建的用户canal怎么能有赋权的能力呢(这里就会报各种错误, 这里有一个原则:被创建的用户的host和grant_priv范围不能超过当前用户)], 所以你要切换成root用户,来创建canal用户并赋权
创建新用户canal并赋予所有权限
- 切换成root用户
- select user,host,grant_priv from user;
查看host是不是%, grant_priv是不是Y, 如果不是,使用update user set host =‘%’ where user =‘root’;修改 - flush privileges; 刷新权限
- create user ‘canal’@‘%’ identified by ‘ZSL1992@!@#zsl’; 创建用户
- grant all privileges on . to ‘canal’@‘%’; 赋权
- flush privileges; 刷新权限