Table of Content

总觉得学东西的来源多半是瞎折腾出来的????

迁移数据库的时候,有一个时刻需要看 mysql 表中的一些数据,所以命令行的窗口下输入了一个 use mysql,然后就悲剧了,我要导入的数据刚好有 user 这个表,而且我的导出还非常智能的加了一句 DROP TABLE IF EXISTS user; 天了噜!!! what the fuck!!!!

然后就完了,命令行退出之后再也连不上,远程的客户端也再连不上,于是查资料,有一个 mysqld_safe --user=mysql --skip-grant-tables --skip-networking & 命令,本以为遇到了救星,没想到这才是噩梦的开始 = =

一开始是这样的,把 skip-grant-tables 参数加到配置文件下,我试了,没用啊,也可能是因为教程针对 mysql,我这是 MariaDB。后来就用的如上命令,安全模式进去之后,再一看教程,我是真吐血了,网上教程是写的 user 表中的 root 用户删了怎么办,这特么跟我有个毛线关系!!!what the fuck!!!!他是有 user 表的结构的啊亲!!我特么没有啊。

后来灵机一动,从来源数据库复制用户表过去,当时没注意到来源数据库是 mysql,系统是 CentOS,复制过去,我还沾沾自喜,心想这次省事了,用户权限神马的应该直接分配好的。

然后噩梦就真的来了,我用 root 用户登录,修改一些权限,他说 access denied for user 'root'@'localhost' (using password: yes),给拒绝了,这下真的完了,什么都干不了了。

还发现 service mysql stop 命令也挂了,说 Stopping MySQL database server: mysqld failed!,遂重启服务器,还是不行,然后连 kill -s 9 这么野蛮的命令都用上了,还是杀不掉这个进程,天了噜,这个时候我已经想骂人了。

终于功夫不负有心人,用 mysqladmin shutdown -u root -p 可以关掉 mysql,但是开启之后还是啥也不行,不过这个时候来了转机,他说 access denied for user 'debian-sys-maint'@'localhost',这特么是个什么用户,在爆栈上面一搜就搜到了,点我,说这个用户的密码在 /etc/mysql/debian.cnf 这个文件里。

但是!!!!我擦!!!我现在的情况是没办法添加用户的阿喂。

不过脑子一动,于是新开了一台 VPS,装同样的系统,同样的 MariaDB,然后备份它的 user 表,把旧的 debian.cnf 改成新的密码,然后不校验模式下执行 DROP TABLE IF EXISTS user;重新导入新的备份,然后完美解决????

折腾折腾又对数据库的权限管理有了新的认识。