先打开命令行输入 mysqld --skip-grant-tables,再打开另一个命令行输入
mysql
>use mysql 
>update user set Password=password('新密码') where User='root'; 于是就显示这样啦,求教大神,到底哪里出了问题
这是my.ini的

解决方案 »

  1.   

    sql命令写错了UPDATE user SET password=PASSWORD('123456') WHERE user='root';
    FLUSH PRIVILEGES;
      

  2.   

    错误号 1054:表中没有 Password 列
      

  3.   

    5.8.5. 设置账户密码
    可以用mysqladmin命令在命令行指定密码:
    shell> mysqladmin -u user_name -h host_name password "newpwd"
    该命令重设密码的账户为user表内匹配User列的user_name和Host列你发起连接的客户端的记录。为账户赋予密码的另一种方法是执行SET PASSWORD语句:mysql> SET PASSWORD FOR 'jeffrey'@'%' = PASSWORD('biscuit');
    只有root等可以更新mysql数据库的用户可以更改其它用户的密码。如果你没有以匿名用户连接,省略FOR子句便可以更改自己的密码:mysql> SET PASSWORD = PASSWORD('biscuit');
    你还可以在全局级别使用GRANT USAGE语句(在*.*)来指定某个账户的密码而不影响账户当前的权限:mysql> GRANT USAGE ON *.* TO 'jeffrey'@'%' IDENTIFIED BY 'biscuit';
    一般情况下最好使用上述方法来指定密码,你还可以直接修改user表:·         要想在创建新账户时建立密码,在Password列提供一个值:·                shell> mysql -u root mysql
    ·                mysql> INSERT INTO user (Host,User,Password)
    ·                     -> VALUES('%','jeffrey',PASSWORD('biscuit'));
    ·                mysql> FLUSH PRIVILEGES;
    ·                 
    ·         要想更改已有账户的密码,使用UPDATE来设置Password列值:·                shell> mysql -u root mysql
    ·                 mysql> UPDATE user SET Password = PASSWORD('bagel')
    ·                       -> WHERE Host = '%' AND User = 'francis';
    ·                mysql> FLUSH PRIVILEGES;
    当你使用SET PASSWORD、INSERT或UPDATE指定账户的密码时,必须用PASSWORD()函数对它进行加密。(唯一的特例是如果密码为空,你不需要使用PASSWORD())。需要使用PASSWORD()是因为user表以加密方式保存密码,而不是明文。如果你忘记了,你可能会象这样设置密码:shell> mysql -u root mysql
    mysql> INSERT INTO user (Host,User,Password)
        -> VALUES('%','jeffrey','biscuit');
    mysql> FLUSH PRIVILEGES;
     
    结果是密码'biscuit'保存到user表后没有加密。当jeffrey使用该密码连接服务器时,值被加密并同保存在user表中的进行比较。但是,保存的值为字符串'biscuit',因此比较将失败,服务器拒绝连接:shell> mysql -u jeffrey -pbiscuit test
    Access denied
    如果你使用GRANT ... IDENTIFIED BY语句或mysqladmin password命令设置密码,它们均会加密密码。在这种情况下,不需要使用 PASSWORD()函数。