前言
在windows上安装Zip版MySQL(选译)
学习mysql的朋友们会发现5.7+版本的mysql变得比以前难安装了许多(当然我们可以选择installer版本,但是这样总感觉对学习mysql不太好),原因在于5.7版引入了一些更新,造成了一些新的坑,如果直接套用以前的教程肯定是行不通的。更新肯定有他的道理,不过这样对中国玩家也太不友好了。
环境: MySQL5.7+ windows7
参考文献
- https://dev.mysql.com/doc/refman/5.7/en/windows-install-archive.html
- https://dev.mysql.com/doc/refman/5.7/en/data-directory-initialization-mysqld.html
正文
从Zip档案安装MySQL的过程如下:
- 解压zip到你想要安装mysql的目录下
可选: 如果你打算使用MySQL benchmark工具和测试套件,你也可以选择debug-test版本的压缩包(译者注:非debug-test版约310MB,这个约380MB)
- 创建配置(option)文件
- 选择MySQL服务端类别
- 初始化MySQL
- 启动MySQL服务
- 对默认用户账号(root)进行安全处理
步骤一:解压缩
步骤二:创建配置(option)文件
如果你想在启动服务端之前指定一些启动选项,你可以在命令行指定他们,也可以把它们写到一个配置文件里。对于一些你每次都想运行的选项,使用配置文件是一个更好的选择,在以下情况下尤其如此:
- 安装目录和data目录与默认路径不一样(C:\Program Files\MySQL\MySQL Server 5.7 and C:\Program Files\MySQL\MySQL Server 5.7\data)
- 你需要调整服务端设置,比如指定内存大小,缓存大小,或者InnoDB设置。
当MySQL服务端在Windows环境下启动,它会尝试在几个地方寻找配置文件,比如Windows目录,C:\,和MySQL安装目录(到URL获取更详细的列表),Windows目录通常情况下像是C:\WINDOWS。你可以在命令行输入以下指令把它打印出来:
C:> echo %WINDIR%
MySQL会在每个路径首先寻找my.ini文件,然后再寻找my.cnf文件。然而,为了避免混淆,你最好只定义一个文件。当你的电脑使用一个boot loader不以C: 目录为启动驱动器的时候,你只能使用my.ini文件。
你可以用任何文本编辑器来编辑你的配置文件。举个例子,如果MySQL被安装在E:\mysql,然后data文件夹在E:\mydata\data目录,你可以创建一个配置文件,使用[mysqld]部分去定义basedir和datadir选项。
[mysqld]
# set basedir to your installation path
basedir=E:\\mysql
# set datadir to the location of your data directory
datadir=E:\\mydata\\data
Windows系统的文件路径使用双斜杠而不是反斜杠
因为自从MySQL5.7.6以后,Zip档案不再包含data目录。为了初始化MySQL,你需要使用 --initialize或者--initialize-insecure命令。(译者:见步骤四)
如果你想要把data放到一个不同的目录下你可以移动它,然后在配置文件里配置好新的路径。
步骤三:选择MySQL服务端类型
以下表格展示了Windows下可用的MySQL5.7服务端类别
名称 | 描述 |
---|---|
mysqld | 使用命名管道进行二进制优化 |
| mysqld-debug | 像mysqld一样,但支持完全调试和自动内存分配检查 |
上述所有服务端类别都为现代英特尔处理器进行了优化,但他们应当被运行在i386级或更高级别的处理器上。
每种服务端都支持同样一系列的储存引擎。使用SHOW ENGINES语句显示当前服务端支持的储存引擎。
所有Windows MySQL5.7服务端都支持数据库目录符号链接
初始化data目录
(译者注: 这一部分是与原文分离的,译者在这里选译一部分)
- 首先来到BASEDIR目录(安装目录)下
- 为了初始化data目录,使用--initialize或者--initialize-insecure选项调用mysqld命令。前者将为root账号生成一个随机密码(译者注:后者生成一个过期密码,可以不输密码直接登入)
使用以下命令:
C:\> bin\mysqld --initialize
# 或者
C:\> bin\mysqld --initialize-insecure
如果mysqld不在安装目录下,你必须为mysqld命令提供--basedir和--datadir选项,如下(译者注:这里用bash不怪我,不过也差不多就是了)
shell> bin/mysqld --initialize --user=mysql
--basedir=/opt/mysql/mysql
--datadir=/opt/mysql/mysql/data
或者如果你已经有一个配置文件
C:\> bin/mysqld --defaults-file=C:\my.ini --initialize
注意: MySQL服务端会在标准错误输出端写入错误信息,这个可能被重定向到了错误日志,你需要在错误日志查找错误信息,具体查看URL。在Windows下,你可以使用 --console选项,重定向输出信息到命令行
初始化data目录完毕后,启动MySQL服务端,然后连接到服务端。
如果你使用--initialize命令你需要输入初始化过程中生成的随机密码。
shell> mysql -u root -p
Enter password: (输入之前生成的随机密码)
如果是--initialize-insecure,你可以直接跳过输入密码。
shell> mysql -u root --skip-password
对默认用户账号(root)进行安全处理
修改root密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';