我在 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 中有一个默认用户/密码设置吗?