对,因为user权限表中有对应的user字段为%,代表任何人。host字段为%就代表任何主机只要把这几条纪录删掉就行了!

解决方案 »

  1.   

    请在WINDOWS的MSDOS方式下运行下列指令
    c:\mysql\bin>mysql -u root
    mysql>use mysql    
    mysql>select * from mysql.user;
    +-----------+------+----------+------------+------------...-+------------+
    | Host      | User | Password |Select_priv |Insert_priv ... | ALter_priv |
    +-----------+------+----------+------------+------------...-+------------+
    | localhost | root |          | Y          | Y          ....| Y          |
    | %         | root |          | Y          | Y          ....| Y          |
    | localhost |      |          | Y          | Y          ....| Y          |
    | %         |      |          | N          | N          ....| N          |
    +-----------+------+----------+------------+------------...-+------------+
    4 rows in set (0.00 sec)   1、MySQL root用户作为可做任何事情的一个超级用户被创造。
         连接必须由本地主机发出。
         注意:新安装系统中的root口令是空的,
         因此任何人能以root而没有一个口令进行连接并且被授予所有权限。
          
      2、一个匿名用户被创造,他可对有一个'test'或以'test_'开始的名字的数据库做任何时期事情,
         连接必须由本地主机发出。这意味着任何本地用户能连接并且视为匿名用户。 
      3、其他权限被拒绝。
         例如,一般用户不能使用mysqladmin shutdown或mysqladmin processlist。在Win32上缺省的权限给所有本地用户以所有数据库的完全权限。
    为了使MySQL更安全,
    你应该为每个用户设置口令并删除mysql.user中有Host='localhost'和User=''的行。
      

  2.   

    那我应该怎么做,才能保证mysql的安全呢?
    能不能写出详细的命令给我?
      

  3.   

    三、动手操作WIN32下新安装MySQL,用户权限如下:
    假设mysql安装在D:\mysql目录下,
    本机IP为 192.168.0.2d:\mysql\bin>mysql -u root
    mysql>use mysql    
    mysql>select * from mysql.user;
    +-----------+------+----------+------------+------------.............-+------------+
    | Host      | User | Password |Select_priv |Insert_priv ............. | ALter_priv |
    +-----------+------+----------+------------+------------.............-+------------+
    | localhost | root |          |Y           |Y           | Y  .......  | Y          |
    | %         | root |          |Y           |Y           | Y  .......  | Y          |
    | localhost |      |          |Y           |Y           | Y  .......  | Y          |
    | %         |      |          |N           |N           | N  .......  | N          |
    +-----------+------+----------+------------+------------.............-+------------+
    4 rows in set (0.00 sec) mysql>DELETE * FROM user WHERE Host='%' and User='';
    ->删除第四个用户mysql>DELETE * FROM user WHERE Host='%' and User='root';
    ->删除第二个用户,不允许其它计算机以"root"用户名登录本机的MySQLmysql>FLUSH PRIVILEGES;
    ->刷新用户授权表
    D:\mysql\bin>mysql -h 192.168.0.2
    ->ERROR 1130: Host '192.168.0.2' is not allowed to connect to this MySQL server
    ->Why??
    ->因为执行了上面三步后,mysql.user中的数据为
    ->+-----------+------+----------+------------+------------.....-+------------+
    ->| Host      | User | Password |Select_priv |Insert_priv ..... | ALter_priv |
    ->+-----------+------+----------+------------+------------.....-+------------+
    ->| localhost | root |          |Y           |Y           | Y   | Y          |
    ->| localhost |      |          |Y           |Y           | Y.  | Y          |
    ->+-----------+------+----------+------------+------------.....-+------------+
    ->使用mysql -h 192.168.0.2,你与MySQL建立了一个TCP/IP连接,此时你的主机将是“192.168.0.2”
    ->而不在是“localhost”,而在用户授权表中,并没有指定“192.168.0.2”这个主机,
    所以得到错误提示
    ->ERROR 1130: Host '192.168.0.2' is not allowed to connect to this MySQL server
    ->★当在本机登录MySQL服务器时,尽量使用"localhost",
    这样你与MySQl的连接将不是一个TCP/IP
    ->有助于提高数据传送速率
      

  4.   

    DELETE * FROM user WHERE Host='%' and User='';
    DELETE * FROM user WHERE Host='%' and User='root';
    这两个命令是不是"*"不要阿  要上输入的话 会出现错误
      

  5.   

    :)
    感谢 zyjzmj(明雅)
    呵呵,当初写这篇文章时也没注意到它
    :(