1.先将MySQL停止、 命令:systemctl stop mysqld #停掉MySQL 命令:systemctl status mysqld #查看状态
2.然后跳过授权表启动MySQL服务程序 这一步主要利用mysqld的 --skip-grant-tables选项 修改my.cnf配置,添加 skip_grant_tables=1启动设置: 打开/etc/my.cnf配置文件 添加skip_grant_tables 一行,然后保存退出
3.然后启动MySQL并查看状态 命令:systemctl start mysqld
4.使用mysql命令连接到MySQL服务,重设root的密码 由于前一步启动的MySQL服务跳过了授权表,所以可以root从本机直接登录 在命令行内直接输入mysql即可
5.进入 mysql> 环境后,通过修改mysql库中user表的相关记录,重设root用户从本机登录的密码: 命令:update mysql.user set authentication_string=password('123qqq...A') where user='root' and host='localhost'; #重新设置密码 命令:FLUSH PRIVILEGES; #刷新授权列表 然后输入 exit 退出mysql 注意:通过执行“FLUSH PRIVILEGES;”可使授权表立即生效,对于正常运行的MySQL服务,也可以用上述方法来修改密码,不用重启服务。本例中因为是恢复密码,最好重启MySQL服务程序,所以上述“FLUSH PRIVILEGES;”操作可跳过。
6.重新以正常方式启动MySQL服务程序,验证新密码 如果前面是修改/etc/my.cnf配置的方法来跳过授权表,则重置root密码后,应去除相应的设置以恢复正常:
7.重置后的新密码,才能成功登入(试试新鲜出炉的密码吧):
OK!现在忘记密码如何重新设置已经完了,接下来就是root修改密码的三种方式:
1.重置管理员root密码 正常的前提是:已知当前MySQL管理用户(root)的密码。 方法:在Shell命令行下设置 使用mysqladmin管理工具,需要验证旧的密码。比如,以下操作将会把root的密码设置为A...qqq321 : 命令:mysqladmin -uroot -p password 'A...qqq321'
2.修改管理员root密码的其他方法(三种) 1)方法1,以root登入mysql> 后,使用set password指令设置 这个与新安装MySQL-server后首次修改密码时要求的方式相同,平时也可以用 扩展一下(如果出现 ERROR 3009 (HY000): Column count of mysql.user is wrong. Expected 45, found 42. Created with MySQL 50564, now running 50726. Please use mysql_upgrade to fix this error. 这种报错,是因为没更新数据库里的结构信息导致的,输入一行命令即可解决:mysql_upgrade -uroot -p'123qqq...A') 我是因为修改密码太多了,可能导致的报错,use用户表没更新又重新设置密码才会这样的
好了,刚才那种情况可能会出现,继续刚才的修改密码 命令:set password for root@localhost=password('1234567');
试验一下
2)方法2,以root登入mysql> 后,使用GRANT授权工具设置 这个是最常见的用户授权方式: 命令: grant all ON *.* TO root@localhost identified by '123qqq...A';
3)方法3,以root登入mysql> 后,使用UPDATE更新相应的表记录 这种方法与恢复密码时的操作相同:
在上述方法中,需要特别注意:当MySQL服务程序以 skip-grant-tables 选项启动时,如果未执行“FLUSH PRIVILEGES;”操作,是无法通过set password或者grant方式来设置密码的。登录MySQL或者验证这两种方式时,都会看到ERROR 1045的报错:
(责任编辑:IT) |