忘了mysql的密码如何解决
小编给大家分享一下忘了mysql的密码如何解决,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!
skip-grant-tables的解法
首先,关闭实例
这里,只能通过kill mysqld进程的方式。
注意:不是mysqld_safe进程,也切忌使用kill -9。
#ps-ef|grepmysqldroot62206171008:14pts/000:00:00/bin/shbin/mysqld_safe--defaults-file=my.cnfmysql63476220008:14pts/000:00:01/usr/local/mysql57/bin/mysqld--defaults-file=my.cnf--basedir=/usr/local/mysql57--datadir=/usr/local/mysql57/data--plugin-dir=/usr/local/mysql57/lib/plugin--user=mysql--log-error=slowtech.err--pid-file=slowtech.pid--socket=/usr/local/mysql57/data/mysql.sock--port=3307root64186171008:17pts/000:00:00grep--color=automysqld#kill6347
推荐:MySQL教程
使用--skip-grant-tables参数,重启实例
#bin/mysqld_safe--defaults-file=my.cnf--skip-grant-tables--skip-networking&
设置了该参数,则实例在启动过程中会跳过权限表的加载,这就意味着任何用户都能登录进来,并进行任何操作,相当不安全。
建议同时添加--skip-networking参数。其会让实例关闭监听端口,自然也就无法建立TCP连接,而只能通过本地socket进行连接。
MySQL8.0就是这么做的,在设置了--skip-grant-tables参数的同时会自动开启--skip-networking。
修改密码
#mysql-S/usr/local/mysql57/data/mysql.sockmysql>updatemysql.usersetauthentication_string=password('123456')wherehost='localhost'anduser='root';QueryOK,0rowsaffected,1warning(0.00sec)Rowsmatched:1Changed:0Warnings:1mysql>flushprivileges;QueryOK,0rowsaffected(0.00sec)
注意:
这里的update语句针对的是MySQL 5.7的操作,如果是在5.6版本,修改的应该是password字段,而不是authentication_string。
updatemysql.usersetpassword=password('123456')wherehost='localhost'anduser='root';
而在MySQL 8.0.11版本中,这种方式基本不可行,因为其已移除了PASSWORD()函数及不再支持SET PASSWORD ... = PASSWORD ('auth_string')语法。
不难发现,这种方式的可移植性实在太差,三个不同的版本,就先后经历了列名的改变,及命令的不可用。
看完了这篇文章,相信你对忘了mysql的密码如何解决有了一定的了解,想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。