最近在搭建hadoop集群,主节点上面安装的MySQL数据库,对着方面不熟悉,为hive、Ooize等服务统一使用的root账号和密码,为了安全一些库对于某些用户是不可见的,所以需要针对不同的服务设置不同的账户及可以访问的主机。
创建新用户
CREATE USER 'uname'@'hostname' IDENTIFIED BY 'password';
其中:
uname:
为新创建的用户名
password:
为新用户的密码
hostname:
为该用户可以在哪台机器上面登陆,本地的则为localhost,如果想要任意机器远程登陆,则可以使用通配符%
用户创建好之后可以查看当前的用户有哪些
select host,user from mysql.user;
我这里面添加的用户为hive
,允许登陆的主机为任意主机,所以用的是%
新用户授权
新用户现在有了,需要为用户授权
GRANT All privileges ON database.* TO 'hive'@'%' IDENTIFIED BY 'password';
database:
为授权访问的库,后面跟的是可访问的表,如果是都可以访问则使用*
新用户不能本地访问
用户创建好了,也授权了,那就登陆吧
mysql -hlocalhost -uhive -pxxx ERROR 1045 (28000): Access denied for user 'hive'@'localhost' (using password: YES)
神马??居然不能登陆,经过一番探索,原来MySQL有账户为空的账户,在本地直接输入>>mysql
就能登陆,将这个空账户删了就可以登陆
mysql -uroot -padmin --切换root登陆 use mysql delete from user where User=''; --删除账号为空的行 flush privileges; --刷新权限 exit --退出
现在就可以用新用户登陆了,搞定~