介绍如何将官网下载的 MySQL zip 包配置成系统服务,以及 MySQL 的基本配置和初始化。

免安装版下载

点击进入 MySQL 官网下载页面,选:Windows (x86, 64-bit), ZIP Archive


配置

解压至:C:\dev\mysql-8.0.11-winx64,并在此目录添加一个空目录:data

配置文件

在解压目录添加 my.ini,内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
[mysqld]
basedir = C:\dev\mysql-8.0.11-winx64
datadir = C:\dev\mysql-8.0.11-winx64\data
port = 3306
lower_case_table_names = 1
default_authentication_plugin=mysql_native_password
character-set-server = utf8mb4

[mysql]
default-character-set = utf8mb4

[client]
default-character-set = utf8mb4

my.ini 文件,网上文章也有说可以不用添加的,暂时未测试。

安装成系统服务

以管理员身份运行 cmd,进入:C:\dev\mysql-8.0.11-winx64\bin 运行:mysqld --install MySQL

1
2
C:\dev\mysql-8.0.11-winx64\bin>mysqld --install MySQL
Service successfully installed.

添加环境变量

  1. 新增 MySQL 环境变量:MYSQL_HOME = C:\dev\mysql-8.0.11-winx64
  2. 修改 Path 环境变量,Path变量下,末尾新增 %MYSQL_HOME%\bin

初始化数据库

如果是从另外一台电脑复制过来,连同上面配置提到的 data 目录一起复制的,那么:

  • 数据库和用户名、密码都有了,就不需做初始化数据库,请跳过这一步,也不需要修改默认密码,直接启动即可
  • 如果不记得管理员账号或密码,那就只能初始化

在MySQL安装目录的 bin 目录下执行初始化命令:mysqld --initialize --console

1
2
3
4
C:\dev\mysql-8.0.11-winx64\bin>mysqld --initialize --console
2018-05-10T09:06:15.354597Z 0 [System] [MY-013169] [Server] C:\dev\mysql-8.0.11-winx64\bin\mysqld.exe (mysqld 8.0.11) initializing of server in progress as process 11688
2018-05-10T09:06:19.145900Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: k,h>nFBok8Hw
2018-05-10T09:06:20.432456Z 0 [System] [MY-013170] [Server] C:\dev\mysql-8.0.11-winx64\bin\mysqld.exe (mysqld 8.0.11) initializing of server has completed

  1. 注意看提示:A temporary password is generated for root@localhost: k,h>nFBok8Hw
  2. 我们先记住初始密码,一会儿会用上(每次初始化的密码都不一样,你要看自己的提示):k,h>nFBok8Hw
  3. 删掉 data 目录下的所有目录和文件,再执行一遍初始化命令,又会重新生成,相当于重新初始化。

启动

cmd 执行:net start MySQL

1
2
3
C:\dev\mysql-8.0.11-winx64\bin>net start MySQL
The MySQL service is starting.
The MySQL service was started successfully.

修改默认密码

初始化之后,必须修改默认密码,否则使用不了,如下,试着创建新数据库。

先用默认密码登录

1
2
3
4
5
6
7
8
9
10
11
12
13
C:\Users\AndyChen>mysql -uroot -p
Enter password: ************
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.11

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

试着创建数据库

1
2
3
mysql> create schema if not exists apg default character set utf8mb4;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql>

修改默认密码

1
2
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'RoOtPaSs';
Query OK, 0 rows affected (0.02 sec)

创建数据库并导入数据

1
2
3
4
5
6
7
8
9
10
mysql> create schema if not exists apg default character set utf8mb4;
Query OK, 1 row affected (0.04 sec)

mysql> use apg;
Database changed
mysql> set names utf8mb4;
Query OK, 0 rows affected (0.00 sec)

mysql> source C:\workspace\apg20180509.sql
...

检查导入的表

1
2
3
4
5
6
7
mysql> show tables;
+--------------------------+
| Tables_in_apg |
+--------------------------+
...
+--------------------------+
38 rows in set (0.01 sec)

绿色版卸载

以管理员身份执行

  1. 停止 MySQL 服务
  2. mysqld –remove
  3. 删除 mysql 根目录下 my.ini 配置的 data 目录,删除 mysql server 相关文件
1
2
3
4
5
6
7
8
C:\WINDOWS\system32>mysqld --remove
Failed to remove the service because the service is running
Stop the service and try again
C:\WINDOWS\system32>net stop mysql
MySQL 服务正在停止..
MySQL 服务已成功停止。
C:\WINDOWS\system32>mysqld --remove
Service successfully removed.

遇到的坑

启动时报错

1
2
3
4
C:\dev\mysql-8.0.11-winx64\bin>net start mysql
发生系统错误 193。

*** 不是有效的 Win32 应用程序。

解决办法:进入 Mysql 根目录下的 bin 目录,找到 mysqld 这个大小为 0 kb 的“二逼”文件,删除,然后就可以各种开心的玩耍了。
并非每台电脑都如此。

再次 mysqld –install 时失败

因为执行了 mysqld –remove 之后,系统服务显示“禁用“,再次 install 及 remove 均会提示失败,在重启系统之前,还有之前安装的残留,所以需要重启系统,重启之后就可以重新 install 了。

druid 连接报错

1
2
java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
java.sql.SQLException: Unknown system variable 'query_cache_size'

原因是数据库驱动版本和数据库版本不匹配。
解决:根据自己的数据库版本去这个地址选择合适的驱动版本
比如我的数据库版本是 8.0.11,那么对应的驱动为:

1
2
3
4
5
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>

连接 MySQL 报错

出现在中文操作系统 win10 上,英文操作系统 win10 正常

1
The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

解决:数据库连接参数添加

1
&serverTimezone=Hongkong

完整连接参数如下:

1
jdbc.url=jdbc:mysql://127.0.0.1:3306/apg?useSSL=false&useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&autoReconnect=true&failOverReadOnly=false&socketTimeout=20000&serverTimezone=Hongkong

MySQL Workbench

官方、免费、强大的 mySQL 客户端,推荐使用
workbench 下载

安装之前,先下载并安装 vc++ 2019 运行库:https://aka.ms/vs/16/release/VC_redist.x64.exe

5.6.x 服务启动后,修改密码

1
set password for 'root'@'localhost'= password('@#$kd3429DAnd');

配置 mysql-8.0.19-winx64

1
mysqld --install MySQL

提示:

1
2
mysqld.exe - 系统错误
由于找不到 VCRUNTIME140_1.dll,无法继续执行代码。重新安装程序可能会解决此问题。

链接: https://pan.baidu.com/s/1dQF8FTFWAjL_zEGjj57kkw 提取码: j2ty
下载该文件放到 C:\Windows\System32,再次执行即可。