1、软件版本
Ubuntu/Linaro:V12.04.2 Linux:V3.5.0-23-generic MySQL:V 5.7.18
2、问题的由来
在linux环境下安装V5.7以上版本的MySQL过程中,系统会自动分配一个用户密码。在首次使用MySQL时,先启动MySQL(sudo service mysql start),接着进入MySQL(mysql -uroot -p自动分配的密码),然后再进行其他操作时,比如查看数据库(show databases)会出现以下错误:
错误信息:ERROR 1820(HY000):You must resetyour password using ALTER USER statement before executing this statement.(错误:在执行这条语句之前,必须采用ALTER USER声明来重置密码)也就是说在首次使用MySQL时必须先把安装时系统随机分配的密码重置。
3、解决方法
网上关于修改MySQL密码的帖子的做法——在MySQL内依次输入以下命令:
(1) use mysql;
(2)update user set password = password("新密码") where user = 'root';
但是5.7以上版本的MySQL在输入第一条命令时就会报出“2、问题由来”中的错误。
解决方案:在MySQL内采用命令命令来修改密码。命令格式:alter user ‘用户名’ identified by ‘新密码’;。比如要把用户’root’的密码修改为’xxxxxxx’可以采用如下命令:alter user 'root'@'localhost' identified by 'xxxxxxx'; ,其中’xxxxxxx’是新密码。Query OK,表明密码修改成功。
网络上流传很广的另外一种修改密码的方法:
(1)使用MySQL:use mysql;
(2)修改密码:update user set password = password("新密码") where user = 'root';
在实际应用时会报错:ERROR 1504(42S22):Unknown column 'password' in 'field list' (字段表里没有’password’)。
错误原因:MySQL数据库中已经没有password这个字段了,把password字段改为 authentication_string即可。
因篇幅问题不能全部显示,请点此查看更多更全内容