前言
由于涉及生产环境 已经将关键信息抹去
一个做游戏的老哥 最近部署了一个新的游戏服务器 买的某服务商的高防服务器 结果发现MySQL的密码加密是个大坑 (默认安装采用的是41位加密,游戏服务端强制使用16位加密)
开始
首先吐槽一波某服务商的高防服务器
系统默认yum源是CentOS官方的yum源 这点坑了多少小白
首先连上了服务器 按照常规的MySQL按照方法安装
下载……
解包……
进目录……
预编译……
编译……
安装……
轻车熟路,之后配置了my.cnf 做了些优化 就交给那位老哥了
正当我在想怎么改16位加密的时候,老哥和我说连不上MySQL
然后我就开始了漫长的排错过程
my.cnf正常 iptables正常 MySQL权限正常
就当我要炸毛的时候 突然想到一件事
(我好像还没启动数据库来着…….
当时我的心情是这样的
总算是连上了 but过了一会 老哥和我说这个数据库貌似不兼容程序,需要用特殊的方法安装
这个时候我对这个“骄傲”的程序有了点看法
老哥按照他的方法安装完毕后 我接手服务器,修改数据库加密方式
先打开my.cnf操作一波
添加红框一行 shift ZZ 走人
之后使用service mysqld restart 重启MySQL服务
重启后要去更新权限组 然后重头戏来了
在认真校对了多次密码后 仍然显示密码错误的报错 

或许是刚才加了old_passwords的原因?
赶快跑回去 把 old_passwords 注释掉
重启MySQL服务器
咳咳。。。
我问了那位老哥 他说安装后是可以使用Cli MySQL的,但是如果退出,就再也登不上Cli MySQL了
这个问题很诡异,我也没细究
老哥说 只需要回车 不用输入密码就可以登录
这个数据库怕不是虫族数据库 

回车 登录成功!!!
可是我很快发现一个问题
这个账号啥权限都没有,严重怀疑是test账号
登出登出……..
正确的密码却提示没权限?那么就从这里入手
MySQL有个命令叫做 skip-grant-tables 作用是忽略权限表 用途是救库
当然 我们不是在救库 我们只需要逻辑来一个小转弯
首先停止MySQL
service mysqld stop
之后用MySQL的安全模式带忽略权限表启动数据库
更新root密码,刷新权限表(更改了加密模式)
use mysql
update user set password=password("Your Password") where user="Your SQL User";
flush privileges;
开启MySQL
service mysqld start
发表评论