创建MySQL用户并授予权限 - 无法连接到服务器

时间:2014-07-23 17:13:04

标签: mysql grant createuser

我刚刚尝试为(当前本地)数据库创建了一堆用户,但我遇到了连接到数据库的问题,并且不太确定我做错了什么。

用户在创建后仍然存在,但在使用Workbench进行连接测试时,我无法使用其凭据连接到数据库。

我创建了我的用户,然后直接授予他们权限:

CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL ON DATABASE.* TO 'username'@'%';

如果我运行SELECT * FROM mysql.user;来查看用户,我可以看到用户在那里。

我尝试过刷新权限,但似乎没有任何区别。

当尝试通过Workbench连接到服务器作为我创建的用户之一时,我会重新提示我输入密码。然后它似乎挂起或告诉我密码错误。

这最初是本地用于开发目的,但是一旦我开始工作,我将在服务器上进行设置。这可能归结为它在本地运行吗?

1 个答案:

答案 0 :(得分:2)

adding users的MySQL文档中所述,在本地连接时,必须创建用户@'localhost'以及通配符位置:

  

其中两个帐户的用户名为monty,密码为   some_pass。两个帐户都是具有完全权限的超级用户帐户   做任何事。 ' monty' @' localhost'帐户只能在以下时使用   从本地主机连接。 ' monty' @'%'帐户使用'%'   主机部分的通配符,因此可以用于从任何连接   主机。

     

有两个帐户的monty能够连接   从任何地方都像蒙蒂。没有localhost帐户,   由[创建]创建的localhost的匿名用户帐户   当monty连接时,mysql_install_db优先   当地主持人。因此,monty将被视为匿名用户。   原因是匿名用户帐户有更多   特定主机列值比' monty' @'%'帐户来了   早期的用户表排序顺序。 (讨论用户表排序   在Section 6.2.4, “Access Control, Stage 1: Connection Verification”中。)

如果用户仅使用主机名'%'表示允许连接,MySQL将改为使用匿名<anonymous>''@'localhost'帐户,因为它将首先尝试匹配localhost位置,然后找不到localhost的相关用户名,因此请改用<anonymous>用户。

或者,可以删除匿名用户,这也应该解决问题,而不是必须复制用户。