mysql community版本(我用的是5.5.14),提供两种安装方式一个是msi,直接双击就能启动GUI的安装界面。另一种方式是一个zip压缩包,只要解压就算安装好啦。这里我就来记录一下我使用zip压缩包安装mysql遇到的问题。
以前我也用过mysql的压缩包安装过mysql,之前的做法就是到官网上下载,然后解压,把命令行cd到bin目录下,执行mysqld就能启动mysql服务器。然后使用mysq命令就可以连接数据库啦,密码默认是空。可是今天我按照这个步骤做的时候却出现了意想不到的问题,在启动服务器时就报错啦,错误是: [ERROR] failed to set datadir to d:\tools\mysql-5.7.14-winx64\data\。看来mysql是在找data目录,找不到呀。我就好心的给它创建了一个data空目录。再次执行mysqld,错误变啦:[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist。我蒙啦,在网上搜索无果后,我决定去翻mysql的文档啦。最后终于找到了这篇文章http://dev.mysql.com/doc/refman/5.7/en/data-directory-initialization-mysqld.html,其中有一句话这样说的Prior to MySQL 5.7.7, Windows distributions include a data directory with prebuilt tables in the mysql
database.,大意是5.7.7以前的版本会随着压缩包带有一个data的目录,里面存放着事先建好的表。而我用的是5.7.14显然在5.7.7以后啦,所以没有data目录,更不会有事先建好的表啦。文章接下来告诉我怎么创建这些事先建好的表,使用命令mysqld --initialize或mysqld --initialize-insecure。我执行的是mysqld --initialize,之后确实可以正常启动服务器啦,不过问题又来啦,我搞了半个多小时怎么都连不上数据库,也在网上搜啦,大家都说默认密码是空,用mysql -u root -p然后回车就行啦,可是我就是登不进去。没办法还得看帮助文档,然后在同篇文章中又看到了To initialize the data directory, invoke mysqld with the --initialize or --initialize-insecure option, depending on whether you want the server to generate a random initial password for the 'root'@'localhost'
account。看后半句,大意是,我们可以选择initialize或initialize-insecure两个选项的一个,根据我们是否想创建一个初始化的随机密码,我去,原来使用--initialize会创建一个密码,这是悲催。我打开data目录下的txy.err文件,找到了随机密码,终于可以连上mysql啦:)