> 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命令,出错,可是又一次登录后成功了。flush privileges
后错误消失。原文:https://www.cnblogs.com/mqxnongmin/p/10630208.html