【问题标题】:MySQL Grant ProblemMySQL 授权问题
【发布时间】:2010-06-10 03:49:53
【问题描述】:

为什么下面的授权语句可能不起作用?

grant all on kylie.* to 'kylie'@'localhost' identified by 'foo';

这是完整的输出。

$ mysql -A
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 63
Server version: 5.1.37 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases like 'kylie%';
+-------------------+
| Database (kylie%) |
+-------------------+
| kylie             | 
+-------------------+
1 row in set (0.00 sec)

mysql> grant all on kylie.* to 'kylie'@'localhost' identified by 'foo';
Query OK, 0 rows affected (0.02 sec)

mysql> exit
Bye

$ mysql -u kylie 
ERROR 1045 (28000): Access denied for user 'kylie'@'localhost' (using password: YES)

似乎这些资助选项每次都能吸引我。我想我已经记住了它们,并且文档似乎也可以检查出来,但是它们经常无法正常工作。我错过了什么?

【问题讨论】:

  • 我假设您在最后两行之间留了一行(要求输入密码“foo”的那一行)?
  • 不,这就是问题所在。 MySQL 没有要求输入密码,只是给了我一个拒绝访问错误。
  • 您是否有一个 ~/.my.cnf 文件,客户端可能正在从中读取(不正确的)密码?

标签: mysql mysql-error-1045 sql-grant


【解决方案1】:

尝试类似:

mysql -ukylie -pfoo kylie

最后一个 kylie 应该告诉它使用 kylie 作为默认数据库(即你有权限的那个)。它可能不是必需的,但我想知道它是否适合您。

感谢 cmets 更新。

【讨论】:

  • 这给了我 MySQL 输出指示使用情况,就像命令完全错误一样。我还尝试了以下方法。 “mysql -ukylie -pfoo” 成功了!想知道为什么。
  • 当使用 -p 选项后跟空格时,mysql 要求您输入密码。它将 foo 作为要连接的数据库的名称。由于没有名为 foo 的数据库,因此会引发错误。如果省略空格,mysql 会将 foo 解释为您的密码,将 kylie 解释为您的数据库,这是正确的。如果您在命令中包含密码,它会显示在您的历史文件等中。使用不带密码的 -p 选项更安全: mysql -p -u kylie kylie 在这种情况下,您将被要求输入密码,不会出现在历史文件等中。
猜你喜欢
  • 1970-01-01
  • 2013-07-19
  • 2011-07-12
  • 1970-01-01
  • 2018-02-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多