CentOS环境中MySQL修改root密码方法
环境相关:
OS:CentOSrelease6.9
IP:192.168.1.10
MySQL:MariaDB-10.1.30
1.修改前的确认
修改root密码是需要重启mysql库,确认生产真的可以重启mysql库;
确认生产是否有直接使用root用户连接到库的使用情况,如果有则要做相应连带变更;
修改密码前请停掉连接到库的应用,也就是停掉该库相关的所有生产线。
2.停库修改密码
ps-ef|grepmysql|grep-vgrep #找到对应的mysql服务器守护进程,查看是否有其他mysql服务守护进行存在 ps-ef|grepmysql|grep-vgrep|xargskill-9 #杀掉root启动库的命令进程和库的守护进程,否则库会自动再次启动 #杀掉进程,停库,杀掉进程之前请确保连接到库的应用全部停掉!!! mysqld_safe--user=mariadb--skip-grant-tables& #忽略授权表启动库,此时如果使用密码则无法登陆库 #连接到库的应用如果没有停掉,此时是无法成功连接到库的 mysql usemysql; selectHost,User,Passwordfromuserwhereuser='root'; exit; #进到mysql库中,查询当前的root密码的密值,保存密值用以回滚 #比如我当前密码是vincent,密值是'*CDA83EBFF468E905FF304FE0D3D9F4D665C6579D' mysql usemysql; updateusersetpassword=password('test')whereuser='root'; exit; #进到mysql库中,设置root密码 mysqladminshutdown mysqld_safe--user=mariadb& #重启库,登录测试 mysql-uroot-ptest-Dmysql exit; #登录成功
3.操作回滚
当你修改完root密码后,发现很多问题,比如有未知的应用以原来的root密码连接到了库(操蛋的历史遗留问题),需要回滚。
mysql-uroot-ptest-Dmysql updateusersetpassword='*CDA83EBFF468E905FF304FE0D3D9F4D665C6579D'whereuser='root'; flushprivileges; exit; #使用上一步记录的root密码修改前的密值进行回滚 mysql-uroot-pvincent-Dmysql exit; #回滚完成
4.相关知识点
可以直接使用密码的密值设置密码,目前没有找到可以直接将密值逆转成密码明文的方法,查看密码的密值可以使用password函数:
mysql-uroot-pvincent selectpassword('vincent'),password('test');
但是如果你知道了密值,就可以神不知鬼不晓的以root权限修改某个用户的密码,使用之,然后还原。
该情况多用于某个用户的密码遗忘,重置密码,相同的情况还出现在oracle数据库中。