密码出错了,
如果你要设置密码
应该用 PASSWORD('admin') 进行加密先我们应该知道MySQL数据库中的口令存储必须用Password()函数加密它。
因为在user表中是以加密形式存储口令,而不是作为纯文本。
如果你没有加密,直接在数据库中执行以下语句:USE mysql 
INSERT INTO user (Host,User,Password) VALUES('%','user_name','your password'); 
FLUSH PRIVILEGES;
 
相信结果将会令你很失望。
因为服务器比较的是加密的值,所以服务器连接一定失败。
这里需要说明的是“FLUSH PRIVILEGES;”这条命令,
它起到了重新加载授权表的作用。
你也可以在shell下直接用 mysqladmin -u root reload
或者 mysqladmin -u root flush-privileges 来实现重载授权表。在MySQL环境下,你可以使用以下语句进行设置密码:
   1、INSERT INTO user(Host,User,Password) VALUES('%','user_name',Password("your password"); 
   2、SET PASSWORD FOR user_name = password("your password") 
以上两种方法都必须进行重载授权表。 
   3、当然你也可以在创建一个用户时直接设置密码,grant语句将为你自动加密口令. 
      如 grant all on *.* to user_name@% identified by "your password"; 
   4、另外你也可以在shell环境下用mysqladmin程序来设置密码
      如 mysqladmin -u root password "your password"

解决方案 »

  1.   

    to  shuixin13(犬犬(心帆)请问你能不能给个小例子,我按你写的设置不成啊!!!
      

  2.   

    三、动手操作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
    ->有助于提高数据传送速率mysql>INSERT INTO user VALUES ('192.168.0.%',
    'local','','Y','Y','Y','Y','Y','Y','N','N','N','N','N','N','N','N');
    mysql>FLUSH PRIVILEGES; 
    ->新建一个名为“local”的用户,他可以从局域网中登录,具有
    ->Select、Insert、Update、Delete、Create、Drop权限
      

  3.   

    注意我这篇文章写于 MySQL 3.23.x
    当时的 mysql.user 中还没有 Create_tmp_table_priv 等列强烈建议你使用 MySQL-Front 来学习 MySQL ,
    最新版 MySQL v2.5  我已将它汉化,
    如果需要,将你的 E-Mail 发消息给我
      

  4.   

    就你的问题而言Warning: mysql_connect() [function.mysql-connect]: Access denied for user: '[email protected]' (Using password: YES) in D:\php\index.php on line 8
    Problem connecting to DataBasemysql.user+------------+-------------+------------+------------
    | Host       | User        | Password   |
    +------------+-------------+------------+------------
    | php        | admin       | admin      |Y,Y,Y,Y,Y,......
    +------------+-------------+------------+------------一共有两个问题,1:   Host = php
      如果你的计算机名为 php 那无所谓,如果不是,建议你将 Host 设置为 localhost 或 127.0.0.12: Password = admin
      这是一个非常错误的作法,
      Password 字段中保存的只能是一个加密值, 它应该用 Password('exp') 来进行加密
      现在建议你将这个字段值删除,操作如下:UPDATE `mysql.user` SET Host = 'localhost' ,Password = '' WHERE Host = 'php' AND User = 'admin';FLUSH PRIVILEGES;然后在你的 PHP 连接代码里<?php 
       $dbh = mysql_connect('localhost:3306','admin','');
      

  5.   

    以上假设为你的 MySQL Apache 均在同一个计算机上