非 root MySQL 密码总是错误

非 root MySQL 密码总是错误

我在 FreeBSD 上使用 MySQL 5.5,一切正常,并且已经运行了一段时间。唯一的问题是,除了 root 之外,没有其他 DB 用户能够正确进行身份验证。

mysql  Ver 14.14 Distrib 5.5.7-rc, for portbld-freebsd7.2 (i386) using  5.2

我添加用户的主要方法是使用 phpMyAdmin。我也尝试过使用命令行。无论哪种方式,用户都可以正常创建,但如果我尝试 mysql -u someuser -ppassword,它会失败,即使我指定了一个他们有完全访问权限的数据库(甚至包括 GRANT)。

出于这个原因,我一直使用root登录来做所有事情,这显然是一个巨大的安全漏洞。

编辑:我多次刷新权限,但都没有成功。下面是 show grants 的输出,我在这里将真实用户/数据库名称对更改为“someuser”。

Grants for someuser@%:
GRANT USAGE ON *.* TO 'someuser'@'%'
GRANT ALL PRIVILEGES ON `someuser`.* TO 'someuser'@'%' WITH GRANT OPTION

答案1

为了让事情正常运转,你需要做三件事

  • 添加 % 和 localhost 的用户,这非常重要

    GRANT ALL PRIVILEGES ON somedatabase.* to someuser@'%' identified by 'password';

    GRANT ALL PRIVILEGES ON somedatabase.* to someuser@localhost identified by 'password';

  • 完成后不要忘记刷新权限

    FLUSH PRIVILEGES;

还要记住,权限是附加的,如果您稍后给出 ALL,则没有理由给出 USAGE,并且您真的不想向用户提供 GRANT 选项,除非您非常确定这是绝对必要的。

答案2

检查用户是否已添加到 mysql-user 表中。如果已添加,请尝试以 mysql-root-user 身份运行此程序。

flush privileges;

我们是在谈论本地用户吗?你在主机字段中添加了什么吗?如果你尝试从与 mysqlserver 相同的机器进行连接,则应该是“localhost”。

答案3

你在 ~/.my.cnf 中有一个默认用户/密码设置吗?

相关内容