记录一下 在window server平台上采用ZIP压缩安装 MySQL 8 的步骤和注意事项
为什么要采用ZIP包安装MySQL服务?
主要是很多情况下,安装过程中希望自己配置一些参数信息,例如数据文件目录、端口号、服务注册名称等。
https://dev.mysql.com/doc/refman/8.0/en/windows-installation.html
https://www.mysql.com/support/supportedplatforms/database.html
Large Table Support
If you need tables with a size larger than 4GB, install MySQL on an NTFS or newer file system. Do not forget to use MAX_ROWS
and AVG_ROW_LENGTH
when you create tables. See Section 13.1.20, “CREATE TABLE Statement”.
如果你的表数据预估会超过4G
大小,则创建表时请使用 MAX_ROWS
and AVG_ROW_LENGTH
选项
MySQL and Virus Checking Software
记得在 MySQL 的安装目录或者数据文件目录下请不要安装其他应用程序,尤其是杀毒软件!
不管哪一种的安装方式,MySQL 所需的目录文件夹名称如下表所示,请确保这些文件目录有访问权限(可读写)。
目录 | 目录中的文件说明 | 备注 |
---|---|---|
bin |
MySQL 的各种命令,服务程序 | |
%PROGRAMDATA%\MySQL\MySQL Server 8.0\ |
Log files, databases 所有日志文件和数据库默认 存放目录 |
%PROGRAMDATA% 是window的系统变量,默认为 C:\ProgramData . 当然可以指定其他目录作为数据目录 |
docs |
Release documentation | |
include |
Include (header) files 头文件 | |
lib |
Libraries 库文件 | |
share |
其他支持文件,包括错误消息、字符集文件、示例配置文件、用于数据库安装的SQL |
ZIP包的名称一般为 mysql-
VERSION
-winx64.zip
,该方式安装需要手动配置各项参数。
参考文档: https://dev.mysql.com/doc/refman/8.0/en/windows-install-archive.html
官方 ZIP包下载路径: https://dev.mysql.com/downloads/mysql/
Extract the main archive to the desired install directory
Optional: also extract the debug-test archive if you plan to execute the MySQL benchmark and test suite
Create an option file
我们计划将数据目录设定为 E:\mysql8\data
,如果data目录不存在可手动创建。
默认MySQL的目录文件存放在 C:\Program Files\MySQL\MySQL Server 8.0\data
我们需要创建MySQL选项文件,也是MySQL启动时读取的配置文件: my.ini
MySQL加载选项文件的路径选择和顺序如下 : 优先选择 my.ini
:
选项文件路径 | 哪种情况下选项文件被加载 | 被加载的优先级 |
---|---|---|
%WINDIR%\my.ini , %WINDIR%\my.cnf |
Global options 全局,任何环境下启动MySQL | 1 优先加载 |
C:\my.ini , C:\my.cnf |
Global options 全局,任何环境下启动MySQL | 2 |
BASEDIR \my.ini , BASEDIR \my.cnf |
Global options 全局,任何环境下启动MySQL | 3 |
defaults-extra-file |
The file specified with --defaults-extra-file , if any |
4 |
%APPDATA%\MySQL\.mylogin.cnf |
Login path options (clients only) | 5 |
DATADIR \mysqld-auto.cnf |
System variables persisted with SET PERSIST or SET PERSIST_ONLY (server only) |
6 |
注意 : 如果你的C盘不是window的系统盘,则选项文件必须为 my.ini
我们计划直接在 E:\mysql8
下创建 my.ini
,即采用第3级别的加载方式,同时保证 1、 2级别没有选项文件。
my.ini文件内容常用如下:
[client]
port = 3309
socket = E:/mysql8/data/mysqld.sock
[mysqld]
port = 3309
basedir = E:/mysql8
datadir = E:/mysql8/data
log-error = E:/mysql8/data/error.log
pid-file = E:/mysql8/data/mysqld.pid
#若你的MySQL数据库主要运行在境外,请务必根据实际情况调整本参数
default_time_zone = "+8:00"
#设置client连接mysql时的字符集,防止乱码
init_connect ='SET NAMES utf8mb4'
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1
#事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)
transaction_isolation = READ-COMMITTED
#TIMESTAMP如果没有显示声明NOT NULL,允许NULL值
explicit_defaults_for_timestamp = true
#SQL数据包发送的大小,如果有BLOB对象建议修改成1G
max_allowed_packet = 128M
server-id = 110
#开启bin log 功能
log-bin=mysql-bin
#binlog 记录内容的方式,记录被操作的每一行
binlog_format = ROW
#对于binlog_format = ROW模式时,FULL模式可以用于误操作后的flashBack。
#如果设置为MINIMAL,则会减少记录日志的内容,只记录受影响的列,但对于部分update无法flashBack
binlog_row_image = FULL
#bin log日志保存的天数
#如果 binlog_expire_logs_seconds 选项也存在则 expire_logs_days 选项无效
#expire_logs_days 已经被标注为过期参数
#expire_logs_days = 7
binlog_expire_logs_seconds = 1209600
log_replica_updates
relay_log_recovery = 1
replica_skip_errors = ddl_exist_errors
#控制 redolog 写磁盘频率 默认为1
innodb_flush_log_at_trx_commit = 1
#控制 binlog 写磁盘频率
sync_binlog = 1
[mysqldump]
quick
max_allowed_packet = 128M
注意 : windows系统中的my.ini 目录路径采用 斜杠/ 或者双反斜杠 \\
备注: 选项文件中没有设置的系统变量MySQL将采用默认值,其他参数根据需求设置,
系统变量默认值是多少,请参看:https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html
参考文档: https://dev.mysql.com/doc/refman/8.0/en/data-directory-initialization.html
CMD命令行模式下,进入目录 E:\mysql8\bin
执行如下命令:
mysqld --defaults-file=E:\mysql8\my.ini --initialize --console
或者
mysqld --defaults-file=E:\mysql8\my.ini --initialize-insecure --console
初始化方式 | 说明 |
---|---|
--initialize |
会生成root账号的随机密码 root登录时采用 mysql -u root -p 进行密码输入验证 |
--initialize-insecure |
则不会生成密码,root登录时采用 mysql -u root --skip-password 跳过密码验证. 登录mysql后给root用户增加密码:ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password' |
CMD命令行模式下,进入目录 E:\mysql8\bin
执行如下命令启动MySQL服务:
mysqld --console
备注:根据需要,可将MySQL bin目录加入window系统变量里面去。
如果采用的是 --initialize-insecure
初始化的则采用如下方式登录:
mysql -u root --skip-password
登录之后赶紧设置一下root账号的密码:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root123';
mysql> FLUSH PRIVILEGES;
建议一个业务数据库一个用户,这里可以创建一个测试数据库,测试用户,mysql8默认innodb ut8mb4
mysql> CREATE DATABASE mytest;
mysql> CREATE USER 'mydev'@'%' IDENTIFIED BY 'mydev123';
mysql> grant all on mytest.* to 'mydev'@'%' with grant option;
mysql> FLUSH PRIVILEGES;
CMD命令行模式下,进入目录 E:\mysql8\bin
执行如下命令关闭MySQL服务:
mysqladmin -u root shutdown -p
mysqladmin -u root shutdown -p
mysqld --install MySQL8 --defaults-file=E:\mysql8\my.ini
sc start MySQL8
OR
NET START MySQL8
效果演示:
E:\mysql8\bin>mysqld --install MySQL8 --defaults-file=E:\mysql8\my.ini
Service successfully installed.
E:\mysql8\bin>net start mysql8
MySQL8 服务正在启动 ...
MySQL8 服务已经启动成功。
SC DELETE MySQL8
OR
mysqld --remove
thanks over !