MySQL高版本修改密码以及Access denied for user 'root'@'localhost' (using password:YES)的解决方案

#MySQL高版本修改密码
MySQL低版本修改密码直接登录后使用命令行即可。

mysql> use mysql;
mysql> update user set password=password(‘123’) where user=‘root’ and host=‘localhost’;

但高版本MySQL会发生错误

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘(‘123’) where user=‘root’ and host=‘localhost’’ at line 1

尝试多次发现user表中已经没有了password字段

mysql> select user,password from user;
ERROR 1054 (42S22): Unknown column ‘password’ in ‘field list’

最后发现,使用ALTER USER 'root'@'localhost'IDENTIFIED BY '********'才可以修改成功

mysql> ALTER USER ‘root’@'localhost’IDENTIFIED BY ‘123’;
Query OK, 0 rows affected (0.10 sec)

安装成功!


Access denied for user ‘root’@‘localhost’ (using password:YES)的解决方案

  1. 关闭Mysql服务
  2. 修改MySQL目录下的my.ini文件,在最后一行添加skip-grant-tables(免密码登录)并保存
  3. 重启MySQL服务
  4. 在环境变量添加bin目录的状态下,在控制台输入mysql -u root -p并执行,进入MySQL
  5. 输入use mysql使用mysql库
  6. 根据上面修改密码方式修改密码(低版本使用update user set password=password('123') where user='root' and host='localhost'; 修改)
  7. 重新修改MySQL目录下my.ini文件,将skip-grant-tables删除并保存
  8. 重启MySQL服务
  9. 接下来使用mysql -u root -p ‘你的密码’即可登录

发现大多数情况此方法并不适用,在网上扒拉半天又发现另一种方法
总体思想没变,还是修改my.ini文件,在最后添加skip-grant-tables,但本方法是使用命令行修改。
方法也没变,将以上第二个方法改为在管理员打开的控制台下输入:
mysqld --defaults-file="D:\MySQL\my.ini" --console --skip-grant-tables即可

再补充:
如果是初始化时输入密码出现此错误,只需要复制初始密码,点击鼠标右键粘贴到需要输入密码的地方(此处Ctrl+V无效)便可进入数据库并设置新密码。

你可能感兴趣的:(数据库)