系统环境:
Ubuntu 8.04
MYSQL Server version: 5.0 .51a-3ubuntu5 (Ubuntu)
Ubuntu 8.04
MYSQL Server version: 5.0 .51a-3ubuntu5 (Ubuntu)
以上是我的系统环境,随着工程开发的需要我们一般需要在mysql中添加一些非root帐户(testmysql)以方便自己的开发和测试。
不过无意中我们发现了一个问题
ERROR
1045
: Access denied for user: 'testmysql@localhost' (Using password: YES)
,新用户添加之后无法用预设的密码登录,而使用空密码登录所设定的帐户是可以的,这是为什么呢?
首先root帐户是可以登录的,那我们就使用root登录吧,然后让我们打开user表(所在位置:mysql --> user):
mysql
>
use
mysql;
mysql > select Host, User from user ;
+ -- ----------+------------------+
| Host | User |
+ -- ----------+------------------+
| % | |
| % | testmysql |
| 127.0 . 0.1 | root |
| localhost | debian - sys - maint |
| localhost | root |
| wpc - laptop | root |
+ -- ----------+------------------+
6 rows in set ( 0.00 sec)
mysql > select Host, User from user ;
+ -- ----------+------------------+
| Host | User |
+ -- ----------+------------------+
| % | |
| % | testmysql |
| 127.0 . 0.1 | root |
| localhost | debian - sys - maint |
| localhost | root |
| wpc - laptop | root |
+ -- ----------+------------------+
6 rows in set ( 0.00 sec)
原来如此我们好像有一个匿名帐户,因为这个帐户密码是空,会不会和这个帐户有关呢?我一向比较大胆,那就不管那么多了,直接干掉它。
mysql
>
delete
from
user
where
User
=
''
;
Query OK, 1 row affected ( 0.00 sec)
mysql > select Host, User from user ;
+ -- ----------+------------------+
| Host | User |
+ -- ----------+------------------+
| % | testmysql |
| 127.0 . 0.1 | root |
| localhost | debian - sys - maint |
| localhost | root |
| wpc - laptop | root |
+ -- ----------+------------------+
5 rows in set ( 0.00 sec)
Query OK, 1 row affected ( 0.00 sec)
mysql > select Host, User from user ;
+ -- ----------+------------------+
| Host | User |
+ -- ----------+------------------+
| % | testmysql |
| 127.0 . 0.1 | root |
| localhost | debian - sys - maint |
| localhost | root |
| wpc - laptop | root |
+ -- ----------+------------------+
5 rows in set ( 0.00 sec)
不错,好像没有了。
那我们再去实验一下,
终于可以登录了,不错不错。
实验成功,那到底是为什么呢?我去网上搜索了一下,没有找到很有用的东西。只能臆断了,估计是系统将非root用户全部作为匿名用户对待了。