mysql 5.7.9以后废弃了password字段和password()函数;authentication_string:字段表示用户密码,而authentication_string字段下只能是mysql加密后的41位字符串密码。所以需要用一下方式来修改root密码:
ALTER user 'root'@'localhost' IDENTIFIED BY 'newpassword';
1.登录MySQL
关闭正在运行的 MySQL 服务。打开 cmd 进入 MySQL 的 bin 目录,可直接找到bin目录,在地址栏输入cmd
输入 mysqld --console --skip-grant-tables --shared-memory 命令。–skip-grant-tables 会让 MySQL 服务器跳过验证步骤,允许所有用户以匿名的方式,无需做密码验证就可以直接登录 MySQL 服务器,并且拥有所有的操作权限。
上一个 DOS 窗口不要关闭,打开一个新的 DOS 窗口,此时仅输入 mysql 命令,不需要用户名和密码,即可连接到 MySQL。
2.修改密码
因为mysql 5.7.9以后废弃了password字段和password()函数;authentication_string:字段表示用户密码,而authentication_string字段下只能是mysql加密后的41位字符串密码。所以需要用一下方式来修改root密码:
ALTER user 'root'@'localhost' IDENTIFIED BY 'newpassword';
MySql 从8.0开始修改密码有了变化,在user表加了字段authentication_string,修改密码前先检查authentication_string是否为空,user表在mysql库中,查看表之前先换库,再查表
SELECT host, user, authentication_string from user where user='root';
若authentication_string字段不为空,则修改该字段为空字符串
UPDATE user SET authentication_string='' WHERE user='root';
然后,
flush privileges; --刷新权限
ALTER user 'root'@'localhost' IDENTIFIED BY 'root';--修改密码为root
若authentication_string字段为空,则直接刷新权限+修改密码