1

我刚刚创建了一个带有密码的新 MySQL 用户,并授予他们对数据库的所有权限。现在我想用我刚刚设置的密码连接到那个数据库,但我不能:

mysql> create user 'reviews' identified by 'reviews';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on reviews.* to 'reviews'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit;
Bye
$ mysql -U reviews -u reviews -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'reviews'@'localhost' (using password: YES)

我究竟做错了什么?我正在使用 MySQL 10.6 版 bash shell 中的 MacOS Lion。

4

1 回答 1

0

当您定义用户时,CREATE USER 语句需要一个主机部分。否则它将使用默认的'%',并且由于 GRANT 语句包含@'localhost',你最终会得到一个有密码的用户,而另一个没有密码。

mysql> CREATE USER 'reviews' IDENTIFIED BY 'reviews';
mysql> GRANT ALL ON reviews.* TO 'reviews'@'localhost';

结果是:

+---------+-------------------------------------------+-----------+
| user    | password                                  | host      |
+---------+-------------------------------------------+-----------+
| reviews | *03E3A1FBF4E68AB8F641C43AF6E952AFD967AFEA | %         |
| reviews |                                           | localhost |
+---------+-------------------------------------------+-----------+

使用以下内容来获得您想要的内容:

mysql> CREATE USER 'reviews'@'localhost' IDENTIFIED BY 'reviews';
mysql> GRANT ALL ON reviews.* TO 'reviews'@'localhost';

请注意,最好在连接时指定数据库,否则连接后需要更改默认数据库:

shell> mysql -u reviews -p -D reviews
于 2012-06-27T11:18:30.207 回答