MySQL中用户名定义上的细节可能导致的错误

来源:互联网 发布:php程序设计案例教程 编辑:程序博客网 时间:2024/05/16 02:35

在MySQL用户中遇到了一些问题,接下来分享一下MySQL用户管理中的细节和问题的解决办法。

遇到的问题

创建用户以后无法登录

明明用SQL语句给用户授权了,但是用户并没有得到授权,反而在user表中增加了一个同名的用户

在想删除某个用户的时候无法删除

细节

在创建用户的时候比如你这样:CREATE USER TOM;其实这句话的意思是:CREATE USER TOM@%; 说明这个账号可以在所有主机上登录,这是默认的。你也可以通过CREATE USER 用户名@主机;来指定该用户可以在哪些主机上登录。比如:TOM@localhost, 表示可以在本地主机登录。

在对用户账号进行操作时如果只用用户名,比如TOM,那么默认都是TOM@%,这样的话,如果你定义了一个用户为TOM@localhost,那么使用 DROP USER TOM,是无法删除用户TOM的,应该使用DROP USER TOM@localhost.

如果你之前没有创建一个用户账号,但是通过GRANT语句给该用户授权了,那么MySQL会自动产生一个该用户。

解决办法

所以在凡是用到用户账号的时候,都应该使用用户@主机 这种格式,并且养成这种规范,防止发生混乱。所以说只是简单的用户名是无法区分用户账号的,需要包括主机名的完整用户账号,同时我们应该避免使用相同的用户名,即使所在的主机是不同的。 但是在用MySQL语句登录用户的时候只需要简单的用户名,因为系统会自动为你加上主机名,比如@localhost。



0 0