我刚刚尝试为(当前本地)数据库创建了一堆用户,但我遇到了连接到数据库的问题,并且不太确定我做错了什么。
用户在创建后仍然存在,但在使用Workbench进行连接测试时,我无法使用其凭据连接到数据库。
我创建了我的用户,然后直接授予他们权限:
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL ON DATABASE.* TO 'username'@'%';
如果我运行SELECT * FROM mysql.user;
来查看用户,我可以看到用户在那里。
我尝试过刷新权限,但似乎没有任何区别。
当尝试通过Workbench连接到服务器作为我创建的用户之一时,我会重新提示我输入密码。然后它似乎挂起或告诉我密码错误。
这最初是本地用于开发目的,但是一旦我开始工作,我将在服务器上进行设置。这可能归结为它在本地运行吗?
答案 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>
用户。
或者,可以删除匿名用户,这也应该解决问题,而不是必须复制用户。