如何在MySQL中更改root用户名

15
我在Ubuntu上运行MySQL,默认安装。
我该如何将用户名从root更改为另一个,比如admin?最好通过命令行操作。
3个回答

41

连接到MySQL后运行

use mysql;
update user set user='admin' where user='root';
flush privileges;

就这样了。

如果您还想更改密码,在 MySQL < 5.7 中运行

update user set password=PASSWORD('new password') where user='admin';

flush privileges;之前。在MySQL >= 5.7中,user表中的password字段更名为authentication_string,因此上述行变为:

update user set authentication_string=PASSWORD('new password') where user='admin';

更改MySQL的用户名是否会影响其正常运行,可能需要root用户进行某些操作吗?或者更改MySQL用户名是安全的,以加强安全性? - Khom Nazid
它不应该影响MySQL的正常运行。 - Adrian Ber
想知道是否有任何选项或解决方法来设置用户名别名,能够同时使用rootadmin这两个名称作为同一个根账户的名称。 - Ωmega
如果使用MySQL Workbench,您需要停用安全更新模式:编辑->首选项->Sql编辑器,然后取消选中安全更新。https://dev59.com/N2gu5IYBdhLWcg3wRlFh - YuAn Shaolin Maculelê Lai
用户表不存在。 - Toma Tomov

1
我只是想说,对我来说,没有“密码”这一列。
要更改密码,正确的字段是authentication_string。
所以命令是:
update user set authentication_string=PASSWORD('new password') where user='admin';

我不是MySQL专家,所以我不确定为什么,但在我的情况下我所说的是正确的。


1
这只发生在MySQL 5.7之后,当我发布我的答案时并不是这种情况。我已经更新了我的答案。 - Adrian Ber
MySQL-8.0中进行了再次更改,如果您需要执行此操作,最好参考手册。 - danblack

-1
例如,您可以根据下面所示的方法将用户名root更改为john。*我建议使用RENAME USER ...命令,因为直接修改mysql.user有时会有问题。*您可能需要使用用户root登录:
RENAME USER 'root'@'localhost' to 'john'@'localhost';

或者:

UPDATE mysql.user SET User='john' WHERE User='root';
FLUSH PRIVILEGES;

然后,您可以登录MySQL:
mysql -u john -p

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接