您的位置:首页 > 数据库 > MySQL

【mysql】MySQL 5.7 参考手册—— 使用非安装版的 Zip 档案文件在 windows 上安装 MySQL

2016-10-21 11:03 941 查看
2.3.5 使用非安装版的 Zip 档案文件在 windows 上安装 MySQL

原文详情参看 :Installing MySQL on Microsoft Windows Using a noinstall Zip Archive

安装过程如下 :

① 提取主档案文件到指定的安装目录

可选:如果你打算执行MySQL的 benchmark 和 测试组件 也可以提取 debug-test 档案文件

② 创建一个选项文件

③ 选择 MySQL 的 服务类型

④ 初始化 MySQL

⑤ 启动 MySQL 服务

⑥ 获得默认的用户账户

2.3.5.1 提取主档案文件到指定的安装目录(即 下载非安装档文件)

1.如果是更新 MySQL ,参看: Section 2.3.8, “Upgrading MySQL on Windows”

2.保证以管理员的身份登入

3.选择一个安装位置

4.提取安装文档文件 : MySQL 官网 → Downloads → Community → MySQL Community Server → 选择合适的 版本即可 。

2.3.5.2 创建一个选项文件(即 自定义配置文件)

当你启动服务的时候如果需要指定启动选项,你可以 在命令行指定他们 或者 把他们放在一个选项文件中 。可以发现使用一个选项文件更方便。

当 MySQL 服务启动 时, 会在几个位置,例如 windows 目录的 C:\ 和 MySQL的安装目录(更多的位置,参看Section 5.2.6, “Using Option Files”)寻找选项文件 。MySQL 会在每个位置首先寻找 my.ini 文件
,然户再寻找 my.cnf 文件,最好只使用一种文件。

你可以充分利用 包含在 MySQL 安装版本中包含的 样例 选项文件 。可参看
Section 6.1.2, “Server Configuration Defaults”.

★ 例如我的免安装的版本中自带的 my-default.ini

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html # *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.

[mysqld]

# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M

# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin

# These are commonly set, remove the # and set as required.
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....

# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES


指定 basedir 和 datadir 的值 ,使用斜线 而不是 反斜线,如果使用反斜线,需要两条反斜线。

[mysqld]
# mysql 安装路径
basedir=E:/develop/mysql-5.7.14-winx64
# data 目录的位置
datadir=E:/develop/mysql-5.7.14-winx64/data


反斜线

[mysqld]
# mysql 安装路径
basedir=E:\\develop\\mysql-5.7.14-winx64
# data 目录的位置
datadir=E:\\develop\\mysql-5.7.14-winx64\\data


自定义配置文件 my.ini ,防止中文乱码 

[client]
# 设置mysql客户端默认字符集

default-character-set=utf8

[mysqld]

#设置3306端口

port = 3306

# 设置mysql的安装目录

basedir=E:\develop\mysql-5.7.14-winx64

# 设置mysql数据库的数据的存放目录

datadir=E:\develop\mysql-5.7.14-winx64\data

# 允许最大连接数

max_connections=200

# 服务端使用的字符集默认为8比特编码的latin1字符集

character-set-server=utf8

# 创建新表时将使用的默认存储引擎

default-storage-engine=INNODB

[mysql]
default-character-set=utf8


    要先关闭 mysql 服务然后修改配置,再重新开启服务,如果服务无法启动可能是因为配置有问题,需要修改 .修改完成后,使用如下命令查看编码是否都正常修改

show variables like 'character%';
显示如下结果则ok

+--------------------------+------------------------------------------------+
| Variable_name            | Value                                          |
+--------------------------+------------------------------------------------+
| character_set_client     | utf8                                           |
| character_set_connection | utf8                                           |
| character_set_database   | utf8                                           |
| character_set_filesystem | binary                                         |
| character_set_results    | utf8                                           |
| character_set_server     | utf8                                           |
| character_set_system     | utf8                                           |
| character_sets_dir       | E:\develop\mysql-5.7.14-winx64\share\charsets\ |
+--------------------------+------------------------------------------------+


show variables like 'collation%';


显示如下结果则修改正常

+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+----------------------+-----------------+


MySQL 5.7.6 的 ZIP 档案文件不再包含 data 目录 ,这时候就需要创建 data 目录,导入 MySQL 系统数据库中的表 来初始化 MySQL 安装 。

在 MySQL 的 bin 目录下通过以下 cmd 命令 初始化 (区别在于前者会随机初始化密码 ,而后者密码为空):

mysqld --initialize

mysqld --initialize-insecure


执行完成便会自动生成 data 目录 。(详细参看: Section 2.10.1.1, “Initializing the Data Directory Manually Using mysqld”.)

初始化 data 目录之后,安装 mysql 服务(以管理员的身份运行 dos)

mysqld --install


开启 mysql 服务

net start mysql


关闭 mysql 服务

net stop mysql


连接到 mysql 服务(bin 目录下)

mysql -u root -p


输入密码

★ 若使用的是 mysqld --initialize 初始化的 data 目录 ,则密码为空,直接回车键即可登入,或者使用如下命令直接登入

mysql -u root --skip-password


★ 若使用的是 mysqld --initialize-insecure 初始化的 data 目录 ,则需要输入 随机生成的初始化密码 (可以在 log 中查找初始化密码)。

如果未找到初始密码,也可以使用以下方法进行密码重置 :
windows下Mysql5.7.11修改初始密码

当然也可以删除 data 目录,重新使用 mysqld --initialize-insecure 生成初始密码为空的 root账户。

连接 mysql 之后 ,修改 root 初始密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';


i.e : 修改 root 用户 密码为 root

ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';


flush privileges;


2.3.5.3

2.3.5.4 初始化 MySQL

见 2.3.5.2 。

2.3.5.5 启动 MySQL 服务(在bin 目录下)

启动命令 :

mysqld


然后打开另一个 cmd 窗口 进行登陆操作即可。

停止 Mysql 服务

mysqladmin -u root -p shutdown


然后输入密码即可 。

把 Mysql 服务 作为 window 服务 安装

mysqld --install


移除在 windows 中的服务

mysqld --remove


2.3.5.6 获取默认用户

见 2.3.5.2

另 : Connector/J API 从 5.1 到 6.0 的 变化 ,参看官网:
Changes in the Connector/J API

以前 连接 mysql 需要使用反射加载 mysql驱动类,如下是往常的连接设置:

老的连接方法:

@Test
public void mysqlConnection() {
Connection connection = null;
PreparedStatement statement = null;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/xlch", "root", "root");//参数分别代表 url 、userName 、password
statement = connection.prepareStatement("select * from user where id = ?");
statement.setInt(1, 1);//动态设置 id 为 1,index 为 1(起始为1)
ResultSet set = statement.executeQuery();
while (set.next()) {
System.out.println("id===" + set.getInt("id") + "    name===" + set.getString(2));//可以通过 index 或者 labelName 获取
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
如果使用新版本的 mysql jar 包还使用如上的方法连接,则会有 2 个警告 和 1 个 异常:

① com.mysql.jdbc.Driver driverClass 已经过时的警告,推荐使用新的
com.mysql.cj.jdbc.Driver ,而且现在 驱动可以自动注册,不再需要手动加载驱动。

② MySQL 5.5.45+, 5.6.26+ and 5.7.6+ 关于 SSL 的警告 。

③ 服务器时区的 异常

综上,新版的 mysql 连接应如下配置:

@Test
public void mysqlConnection() {
Connection connection = null;
PreparedStatement statement = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver"); // 可省略
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/xlch?serverTimezone=UTC&useSSL=false", "root", "root");//参数分别代表 url 、userName 、password
statement = connection.prepareStatement("select * from user where id = ?");
statement.setInt(1, 1);//动态设置 id 为 1,index 为 1(起始为1)
ResultSet set = statement.executeQuery();
while (set.next()) {
System.out.println("id===" + set.getInt("id") + "    name===" + set.getString(2));//可以通过 index 或者 labelName 获取
}
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
}  finally {
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: