mysql-8.0.11 在 win10 下的安装跳坑记

2019年04月02日 15:00 · 阅读(1719) ·

[目录]

参考

本文参考了 mysql-8.0 安装教程(自定义配置文件,密码方式已修改)。结合自己的实际操作过程写成。

其他部分

彻底卸载MYSQL,windows版

安装出现“The service already exists”

说明

本文的安装过程比较特殊,一些配置因为之前已经安装过一个版本,导致这些配置和平常的不同,因此安装过程中出现了许多问题。

这篇文章是记录这些问题是怎样产生的以及是怎样解决这些问题的,是提供给出现这些安装问题的大哥作为一个参考,并非是一个安装的教程。

因此不建议一开始安装就按照本文中的安装步骤来,这样是容易出问题的。

所以如果是一开始安装 MySql,建议看下面这篇文章,一步到位。

mysql-8.0 安装教程(自定义配置文件,密码方式已修改)

开发环境

名称 版本
操作系统 Windows 10 X64
MySql 8.0.11

1.下载

1.1 安装包

进入 https://www.mysql.com

点击 DOWNLOADS-Community (GPL) Downloads »

在页面中找到 MySQL on Windows (Installer & Tools)

页面下方下载安装包

1.2 下载 zip 包

MySQL8.0 For Windows zip包下载地址

点击底部No thanks, just start my download.即可开始下载

或者 mysql-8.0.11-winx64.zip

本文以安装 zip 包为例

2.解压zip包到安装目录

我之前有安装过 x86MySql 5.1

安装在

D:\Program Files (x86)\MySQL\MySQL Server 5.1

这次我把 mysql-8.0.11-winx64.zip 解压到 D:\Program Files\mysql-8.0.11-winx64

3.创建配置文件

在解压目录下添加配置文件 my.ini

特别注意这里,如果是首次安装,需要修改为 3306

  1. # 设置3307端口,因为之前安装过 MySql 5.1 已经使用了 3306 端口,这里我设置为 3307 避免冲突
  2. port=3307

my.ini 内容如下

  1. [mysqld]
  2. # 设置3307端口,因为之前安装过 MySql 5.1 已经使用了 3306 端口,这里我设置为 3307 避免冲突
  3. port=3307
  4. # 设置mysql的安装目录
  5. basedir=D:\Program Files\mysql-8.0.11-winx64
  6. # 设置mysql数据库的数据的存放目录
  7. datadir=D:\Program Files\mysql-8.0.11-winx64\Data
  8. # 允许最大连接数
  9. max_connections=200
  10. # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
  11. max_connect_errors=10
  12. # 服务端使用的字符集默认为UTF8
  13. character-set-server=utf8
  14. # 创建新表时将使用的默认存储引擎
  15. default-storage-engine=INNODB
  16. # 默认使用“mysql_native_password”插件认证
  17. default_authentication_plugin=mysql_native_password
  18. [mysql]
  19. # 设置mysql客户端默认字符集
  20. default-character-set=utf8
  21. [client]
  22. # 设置mysql客户端连接服务端时默认使用的端口
  23. port=3306
  24. default-character-set=utf8

查看所有配置项,请参考 https://dev.mysql.com/doc/refman/8.0/en/mysqld-option-tables.html

4.初始化数据库

打开命令行,进入 mysql 安装 bin 目录

D:\Program Files\mysql-8.0.11-winx64\bin

输入命令 mysqld --initialize --console

执行完成后,会打印 root 用户的初始默认密码

上图中的文字如下:

  1. Microsoft Windows [版本 10.0.16299.967]
  2. (c) 2017 Microsoft Corporation。保留所有权利。
  3. C:\windows\system32>D:
  4. D:\>cd D:\Program Files\mysql-8.0.11-winx64\bin
  5. D:\Program Files\mysql-8.0.11-winx64\bin>mysqld --initialize --console
  6. 2019-04-02T09:52:49.337660Z 0 [System] [MY-013169] [Server] D:\Program Files\mysql-8.0.11-winx64\bin\mysqld.exe (mysqld 8.0.11) initializing of server in progress as process 14836
  7. 2019-04-02T09:53:02.166696Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: YTk-!qghz5d0
  8. 2019-04-02T09:53:09.989487Z 0 [System] [MY-013170] [Server] D:\Program Files\mysql-8.0.11-winx64\bin\mysqld.exe (mysqld 8.0.11) initializing of server has completed

注意!输出结果里面有一段:

  1. [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: YTk-!qghz5d0

其中 root@localhost: 后面的 YTk-!qghz5d0 就是初始密码。这个密码需要记住。

要是忘记了密码,可以删掉初始化的数据目录 datadir=D:\Program Files\mysql-8.0.11-winx64\Data,再执行一遍初始化命令。

或者参考 https://dev.mysql.com/doc/refman/8.0/en/data-directory-initialization-mysqld.html

5.安装服务

打开命令行,进入 mysql 安装 bin 目录

D:\Program Files\mysql-8.0.11-winx64\bin

输入命令 mysqld --install [服务名]

后面的服务名可以不写,默认的名字为 mysql

所以我们输入命令 mysqld --install

如果提示 Service successfully installed.,安装成功。

5.1 安装踩坑记

如果在上面已经提示 Service successfully installed.,本部分(5.1)可以不用看了,因为我之前安装了 MySQL Server 5.1 导致这里出现了问题, 下面是踩坑的记录。

  1. D:\Program Files\mysql-8.0.11-winx64\bin>mysqld --install
  2. The service already exists!
  3. The current server installed: "D:\Program Files (x86)\MySQL\MySQL Server 5.1\bin\mysqld" --defaults-file="D:\Program Files (x86)\MySQL\MySQL Server 5.1\my.ini" MySQL
  4. D:\Program Files\mysql-8.0.11-winx64\bin>

这里提示我们已经存在了这个服务了!

肿么办呢?

上面的提示中我们看到我们安装的是 MySQL Server 5.1,这次我们安装的是 mysql-8.0.11,前面说过,命令的格式是 mysqld --install [服务名],所以我们把安装的命令修改为 mysqld --install mysql8 试试

哈哈,借用云龙兄一句话,真他娘的是个人才

  1. D:\Program Files\mysql-8.0.11-winx64\bin>mysqld --install mysql8
  2. Service successfully installed.

所以得到结论,如果你的电脑上需要安装多个MySQL服务,就可以用不同的名字区分了,比如 mysql5mysql8。这个 mysql5mysql8 需要根据版本号来获得。

但是,这样并不能解决问题,之前的 mysql 会对这个 mysql 造成很多影响,给使用带来非常大的不便。所以我们需要把之前的 mysql 卸载掉。

5.1.1 卸载 mysql

1.控制面板里的增加删除程序内进行删除

2.删除之前 mysql 安装目录 D:\Program Files (x86)\MySQL\MySQL Server 5.1

3.开始 -> 运行-> regedit 看看注册表里这几个地方删除没有

(1)HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL 目录删除

(2)HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL 目录删除

(3)HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL 目录删除(我卸载的时候没有找到,略过后仍达到完全卸载的目的。)

4.在 cmd 中输入 sc query mysql,查看名为 mysql 的服务

如上图,服务已经存在,所以进行删除操作 sc delete mysql

删除成功,重启电脑

5.1.2 重新安装 mysql

重新进入 mysql bin 目录 D:\Program Files\mysql-8.0.11-winx64\bin,输入 mysqld --install

安装成功

6.启动服务

安装完成之后,就可以通过命令 net start mysql 启动 mysql 服务了。

  1. D:\Program Files\mysql-8.0.11-winx64\bin>mysqld --install
  2. Service successfully installed.
  3. D:\Program Files\mysql-8.0.11-winx64\bin>net start mysql
  4. MySQL 服务正在启动 ..
  5. MySQL 服务已经启动成功。
  6. D:\Program Files\mysql-8.0.11-winx64\bin>

7.ERROR 2003 (HY000)

7.1 问题描述

在 mysql 安装目录 D:\Program Files\mysql-8.0.11-winx64\bin 下执行命令 mysql -u root -p

提示 ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)

又遇到坑了

7.2 解决办法

1.停止 mysql 服务,net stop mysql

2.删除 mysql data 目录 D:\Program Files\mysql-8.0.11-winx64\Data

3.修改 my.ini 文件

之前为了兼容

my.ini 文件的端口设置成了

  1. # 设置3307端口,因为之前安装过 MySql 5.1 已经使用了 3306 端口,这里我设置为 3307 避免冲突
  2. port=3307

需要修改为

  1. # 设置端口
  2. port=3306

my.ini 文件内容如下

  1. [mysqld]
  2. # 设置端口
  3. port=3306
  4. # 设置mysql的安装目录
  5. basedir=D:\Program Files\mysql-8.0.11-winx64
  6. # 设置mysql数据库的数据的存放目录
  7. datadir=D:\Program Files\mysql-8.0.11-winx64\Data
  8. # 允许最大连接数
  9. max_connections=200
  10. # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
  11. max_connect_errors=10
  12. # 服务端使用的字符集默认为UTF8
  13. character-set-server=utf8
  14. # 创建新表时将使用的默认存储引擎
  15. default-storage-engine=INNODB
  16. # 默认使用“mysql_native_password”插件认证
  17. default_authentication_plugin=mysql_native_password
  18. [mysql]
  19. # 设置mysql客户端默认字符集
  20. default-character-set=utf8
  21. [client]
  22. # 设置mysql客户端连接服务端时默认使用的端口
  23. port=3306
  24. default-character-set=utf8

4.重新初始化数据库

打开命令行,进入 mysql 安装 bin 目录

D:\Program Files\mysql-8.0.11-winx64\bin

输入命令 mysqld --initialize --console

  1. D:\Program Files\mysql-8.0.11-winx64\bin>mysqld --initialize --console
  2. 2019-04-03T03:19:05.152776Z 0 [System] [MY-013169] [Server] D:\Program Files\mysql-8.0.11-winx64\bin\mysqld.exe (mysqld 8.0.11) initializing of server in progress as process 5380
  3. 2019-04-03T03:19:16.931721Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: #jbdxL4pHquq
  4. 2019-04-03T03:19:24.813577Z 0 [System] [MY-013170] [Server] D:\Program Files\mysql-8.0.11-winx64\bin\mysqld.exe (mysqld 8.0.11) initializing of server has completed

5.再次启动 mysql 数据库

输入命令 net start mysql

  1. D:\Program Files\mysql-8.0.11-winx64\bin>net start mysql
  2. MySQL 服务正在启动 ..
  3. MySQL 服务已经启动成功。

8.进入 mysql 命令模式

在 mysql 安装目录 D:\Program Files\mysql-8.0.11-winx64\bin 下执行命令 mysql -u root -p

  1. D:\Program Files\mysql-8.0.11-winx64\bin>mysql -u root -p
  2. Enter password: ************

输入密码:#jbdxL4pHquq

  1. D:\Program Files\mysql-8.0.11-winx64\bin>mysql -u root -p
  2. Enter password: ************
  3. Welcome to the MySQL monitor. Commands end with ; or \g.
  4. Your MySQL connection id is 8
  5. Server version: 8.0.11
  6. Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
  7. Oracle is a registered trademark of Oracle Corporation and/or its
  8. affiliates. Other names may be trademarks of their respective
  9. owners.
  10. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  11. mysql>

9.更改密码和密码认证插件

在 mysql8.0.4 以前,密码认证插件是mysql_native_password,而现在使用的是caching_sha2_password

因为当前有很多数据库工具和链接包都不支持caching_sha2_password,为了方便,我暂时还是改回了mysql_native_password 认证插件。

进入 mysql 命令模式中执行命令(这个命令修改了插件,同时修改了密码):

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1213abc!';

其中 1213abc! 就是我设置的新密码。

  1. mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1213abc!';
  2. Query OK, 0 rows affected (0.06 sec)
  3. mysql>

如果想默认使用 mysql_native_password 插件认证,可以在配置文件中(D:\Program Files\mysql-8.0.11-winx64\my.ini)配置 default_authentication_plugin项。

  1. [mysqld]
  2. default_authentication_plugin=mysql_native_password

到此,安装部署就完成了。

10.使用工具连接 mysql

打开 Navicat Premium 12.1

输入连接名称,密码

连接成功

也可以使用其它工具,如 SQLyog