mysql创建新用户及新用户不能本地登陆的问题

最近在搭建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  --退出

现在就可以用新用户登陆了,搞定~

原文地址:https://www.cnblogs.com/wxshi/p/7483121.html