日期:2014-05-16 浏览次数:20799 次
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文件内容。