今天是我第一次用MySQL这个软件,我在自己的系统中安装了一个(OS X ),在虚拟机中的windows XP 环境下安装了一个,我希望能在我自己的系统下远程连接到XP 中的MySQL,于是XP环境下的MySQL让我用root权限改了改,从开始的从网上复制命令改,到后来发现了只有root权限可见的MySQL数据库中的user表,(因为之前一直在看书,而且不会用workbench,所以一直用命令行在弄)。其中经历的可想而知,于是我发现了user标中user属性为root的元组。其中password字段为空,我就改成了hhh,但是退出重启后,发现用hhh这个密码并不能进入root权限,我认为是编码问题。在数据库中的hhh在并不是输入密码的hhh 很有可能在XP系统下进行了utf-8到ANSI的转换,这怎么半?能进入root权限让我这个控制欲强烈的人很难接受,于是用了各种方法,包括,用记事本直接打开data文件夹下的以user命名的不同后缀的文件,把能看见的类似hhh的符号都删除,到后来的把user开头的三个文件复制到能看见的工程中把密码去掉,但是发现了很奇怪的一件事,开始的时候root的password字段事空的,但是你把这张表的三个文件都复制到其他库中时打开表,把password设置为null却提示password字段不能为null。这是为什么?有明白的大神告诉小弟吧。因为不能为null我就使passward字段等于''(连续连个单引号中间没有东西),在复制回去覆盖原文件。发现还是不行,还是不能用root权限登陆。
山穷水尽疑无路,柳暗花明又一村。
秉承着车到山前必有路的原则。我无疑发现了我的安装文件。我没有用快速安装,而是下来文佳夹后配置环境变量使用的,于是乎我吧原来的没有更改的mysql文件夹替换掉了我更改过的文件夹(这里说一下,你下载一个”mysql—版本号—所支持系统“ 的文件夹,里面的data文件夹中的mysql文件夹 就是那个只有root权限可见的库,替换掉它就好了)。于是,就又回到了root权限没有密码的状态。
等到一切我都完成后我反思了一下这件事的经过,当然,贸然的启用root权限做一些事情事我的错,前些日子因为相同的原因我还弄坏了我的zsh和 vim,但是更因该反省的是并没有完全的利用自己学过的知识,其实回发现我尝试的第二种办法并没有已经很接近完美的解决办法了,不象后来的一中犯方法我损失了所有的我自己授权的用户(这里只是一说,其实我并没有授权任何其他帐户,毕竟才安装不到一天)。由第二种方法所衍生出来的办法就是把user字段为root的元组的password字段更新为%。因为它是一个匹配符号,无论输入什么为密码都可以通过。这样就不用担心不同的编码之间的转换问题(% 作为匹配字符是在SQL语言是就定义的,就算是你输入的是一列乱码,也能通过)。这样的话你用root权限登陆之后在进行一些必要的修改,就不会损失授权用户了。
我在这里用的方法都比较极端,大家小心使用。