如果出现以下BUG:
19/09/17 08:42:23 ERROR manager.SqlManager: Error executing statement: java.sql.SQLException: Access
Error: java.lang.RuntimeException: java.lang.RuntimeException: java.sql.SQLException: null, message from server: "Host ‘slave002’ is not allowed to connect to this MySQL server"
解决方案:
- 谁权限不够给谁赋予权限:
举个栗子:
grant all privileges on *.* to 'hadoop'@'master001' with grant option;
然后重启mysql服务:
service mysqld restart;
- 远程的DataNode节点无权限
首先尝试从DataNode节点远程连接NameNode节点上的数据库
mysql -u hadoop -h master001 -p
看看能否连接上,如果不能连接上:
grant all privileges on *.* to 'hadoop'@'%' with grant option;
给与远程访问权限,如果还不能连接上,那么请看第三条:
- 你可能和我出了同样的问题,莫名的BUG,如果在谁无权给谁授权这种方式解决不了的情况下。。。。
首先,新创建一个用户:
create user 'hadoop1'@'%' identified by 'hadoop'
注意,这里是直接创建的可以远程访问的用户,而不是一个localhost用户!
然后跑程序如果出现本地访问失败的情况:
grant all privileges on *.* to 'hadoop1'@'localhost' with grant option;
grant all privileges on *.* to 'hadoop1'@'master001' with grant option;
%竟然不包含localhost!!!
然后本地用户竟然无法给%进行授权!!!
然而在首次创建便是远程可连接用户的前提下,可以给本地用户成功授权!!!