> use mysql; > update user set Password=password('root') where User='root' > flush privileges; > quit;User表存储的是mysql的用户的权限和密码,mysql密码都是经过加密后存储的,所以我们的密码需要用password函数对其进行加密。
> use mysql; > insert into user(Host,User,Password) values('localhost','bob',password('1234')); > grant all on *.* to 'bob'@'localhost'最后一句是赋予权限的意思,赋予bob所有的权限,其中all可以换成[update|delete|insert|create...]等权限,*.*表示任意数据库的任意表,用户可以自己根据需要筛选。最后是赋予权限给哪个用户。
DROP USER ''@'localhost';由于mysql如果匹配到多个账户时,有特定的顺序the most-specific Host values first,详细见http://stackoverflow.com/questions/10299148/mysql-error-1045-28000-access-denied-for-user-billlocalhost-using-passw
SELECT * FROM mysql.user WHERE User='root' and Host="localhost" \G\G表示以键值对形式返回,这样看起来更方面,其中我们会发现
Grant_priv: N表示账户没有grant权限,所以我们就赋予grant权限给它。
> update user set Grant_priv='Y' where User='root' and Host='localhost'; > flush privileges;重新登录mysql。笔者直接flush privilege后执行grant命令,出错,但是重新登录后成功了。
原文地址:http://blog.csdn.net/zpllwy/article/details/27545929