日期:2014-05-16  浏览次数:20775 次

windows server 2003安装mysql5异常后的解决过程

windows server 2003安装mysql5异常后的解决过程

适合级别:入门,中级

关键字 ? : mysql,mysql安装,windows server 2003,root密码

说明 ? ? ?:本文所述问题不一定经常遇到,笔者重在分享解决问题的过程。

?

?

1 问题描述

为了全面地构建开发环境,除了IDE和server等之外,也打算在windows server 2003(EE sp2)上安装mysql(5.5.9-win32)。

安装过程看似顺利,一路下一步,但在安装好配置mysql实例时,最后一步老是报错 ,原因是我在配置过程中要求设置root密码,但最后一步“安全设置”的时候总是认为root密码不对因为权限不足(不管我是留空还是如何)。

?

反复尝试过“不设置root密码”,“设置root密码时留空” 和 “设置一个自定义的root密码”,最后还是一样,总是报同样的错。期间ping过localhost,127.0.0.1,telnet过localhost的3306,重新mysql service等。

同时也怀疑过是不是mysql安装包区分xp和2003系统等,因为这个安装包同事在xp上安装是OK的。

甚至还怀疑过使用的mysql客户端工具有问题,因为主要是用它来验证是否能root登录数据库的;所以我还自己写python脚本去连接mysql,事实证明确实是root密码不对。[关于windows上python访问mysql请参看另外的文章: http://nodex.iteye.com/blog/1070281]

?

最后采用绝招:卸载重新安装,关闭防火墙和杀毒软件等; 结果还是一样,多次重新配置也一样,而且还衍生出许多额外的麻烦,比如windows 的mysql service在卸载程序时有时不能自动删除等。

?

至此,有点郁闷;本来是跟另一个哥们儿两人在结对的,搞了半天的mysql安装最后 。。。遂搁置;我开始在被人的机器上coding,下午重新开始解决此问题。

?

2 重新开始解决

- 先查找如何手动删除windows服务,不然每次卸载和重装mysql都得改名字,还遗留一些不用的服务;最方便的方法就一句话:?

cmd> sc delete mysql 
? ?

- 重新使用ping和telnet确认mysql在正常运行: OK的!

- re-config mysql,勾选“允许匿名访问mysql” ; 之后匿名访问mysql,OK的,确实看到了information_schema和test两个默认库!

- 至此,精确定位为 root密码设置 的问题! 也就是说,看起来配置mysql实例的时候root用户是肯定创建了,但是密码并没有设置为我们输入的那个,不知道默认是什么 。。。肯定不是空。

- 所以,选择强制修改mysql root用户密码的方法来解决此问题! - 这个其实也很简单,基本思路就是先STOP MYSQL 服务,然后在cmd命令行带上特定选项启动MYSQL,以忽略权限验证,如下:

MYSQL_HOME> mysqld.exe --skip-grant-tables?

这时的mysql是不需要验证权限即可访问的,所以我们另打开一个cmd,进入mysql命令行:

?

mysql>use mysql;
mysql>select user,password from user where user='root';
mysql>update user set password = password('newpassword') where user='root';
mysql>flush privileges;
mysql>exit
?

?

然后也STOP另一个CMD里手动启动的MYSQL服务,如果ctrl+c或关闭窗口后mysqld进程还在,一定要强制结束,确保MYSQL停止。

?

在WINDOWS服务里启动MYSQL服务,再次用root登录mysql,一切OK !

?

?

3 虽然是个小麻烦,但不同的解决思路和过程所花费的时间和精力等资源很不相同。同时,这也让我更加不喜欢windows的各种诡异的问题,一个图形界面封装了所有,偶尔抛出一个exception或error,让用户很为难啊。

尽管问题看起来解决了,但实际上,究竟为何安装mysql后配置实例时,会出现密码设置无效或出错的状况呢?我还不得而知,希望对msi有研究的同仁分析下msi文件内容。