[目录]
参考
本文参考了 mysql-8.0 安装教程(自定义配置文件,密码方式已修改)。结合自己的实际操作过程写成。
其他部分
说明
本文的安装过程比较特殊,一些配置因为之前已经安装过一个版本,导致这些配置和平常的不同,因此安装过程中出现了许多问题。
这篇文章是记录这些问题是怎样产生的以及是怎样解决这些问题的,是提供给出现这些安装问题的大哥作为一个参考,并非是一个安装的教程。
因此不建议一开始安装就按照本文中的安装步骤来,这样是容易出问题的。
所以如果是一开始安装 MySql
,建议看下面这篇文章,一步到位。
开发环境
名称 | 版本 |
---|---|
操作系统 | Windows 10 X64 |
MySql | 8.0.11 |
1.下载
1.1 安装包
点击 DOWNLOADS
-Community (GPL) Downloads »
在页面中找到 MySQL on Windows (Installer & Tools)
页面下方下载安装包
1.2 下载 zip 包
点击底部No thanks, just start my download.
即可开始下载
本文以安装 zip
包为例
2.解压zip包到安装目录
我之前有安装过 x86
的 MySql 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
# 设置3307端口,因为之前安装过 MySql 5.1 已经使用了 3306 端口,这里我设置为 3307 避免冲突
port=3307
my.ini
内容如下
[mysqld]
# 设置3307端口,因为之前安装过 MySql 5.1 已经使用了 3306 端口,这里我设置为 3307 避免冲突
port=3307
# 设置mysql的安装目录
basedir=D:\Program Files\mysql-8.0.11-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\Program Files\mysql-8.0.11-winx64\Data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
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 用户的初始默认密码
上图中的文字如下:
Microsoft Windows [版本 10.0.16299.967]
(c) 2017 Microsoft Corporation。保留所有权利。
C:\windows\system32>D:
D:\>cd D:\Program Files\mysql-8.0.11-winx64\bin
D:\Program Files\mysql-8.0.11-winx64\bin>mysqld --initialize --console
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
2019-04-02T09:53:02.166696Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: YTk-!qghz5d0
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
注意!输出结果里面有一段:
[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
导致这里出现了问题, 下面是踩坑的记录。
D:\Program Files\mysql-8.0.11-winx64\bin>mysqld --install
The service already exists!
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
D:\Program Files\mysql-8.0.11-winx64\bin>
这里提示我们已经存在了这个服务了!
肿么办呢?
上面的提示中我们看到我们安装的是 MySQL Server 5.1
,这次我们安装的是 mysql-8.0.11
,前面说过,命令的格式是 mysqld --install [服务名]
,所以我们把安装的命令修改为 mysqld --install mysql8
试试
哈哈,借用云龙兄一句话,真他娘的是个人才
D:\Program Files\mysql-8.0.11-winx64\bin>mysqld --install mysql8
Service successfully installed.
所以得到结论,如果你的电脑上需要安装多个MySQL服务,就可以用不同的名字区分了,比如 mysql5
和 mysql8
。这个 mysql5
和 mysql8
需要根据版本号来获得。
但是,这样并不能解决问题,之前的 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 服务了。
D:\Program Files\mysql-8.0.11-winx64\bin>mysqld --install
Service successfully installed.
D:\Program Files\mysql-8.0.11-winx64\bin>net start mysql
MySQL 服务正在启动 ..
MySQL 服务已经启动成功。
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
文件的端口设置成了
# 设置3307端口,因为之前安装过 MySql 5.1 已经使用了 3306 端口,这里我设置为 3307 避免冲突
port=3307
需要修改为
# 设置端口
port=3306
my.ini
文件内容如下
[mysqld]
# 设置端口
port=3306
# 设置mysql的安装目录
basedir=D:\Program Files\mysql-8.0.11-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\Program Files\mysql-8.0.11-winx64\Data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
4.重新初始化数据库
打开命令行,进入 mysql 安装 bin 目录
D:\Program Files\mysql-8.0.11-winx64\bin
输入命令 mysqld --initialize --console
D:\Program Files\mysql-8.0.11-winx64\bin>mysqld --initialize --console
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
2019-04-03T03:19:16.931721Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: #jbdxL4pHquq
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
D:\Program Files\mysql-8.0.11-winx64\bin>net start mysql
MySQL 服务正在启动 ..
MySQL 服务已经启动成功。
8.进入 mysql 命令模式
在 mysql 安装目录 D:\Program Files\mysql-8.0.11-winx64\bin
下执行命令 mysql -u root -p
D:\Program Files\mysql-8.0.11-winx64\bin>mysql -u root -p
Enter password: ************
输入密码:#jbdxL4pHquq
D:\Program Files\mysql-8.0.11-winx64\bin>mysql -u root -p
Enter password: ************
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
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.
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!
就是我设置的新密码。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1213abc!';
Query OK, 0 rows affected (0.06 sec)
mysql>
如果想默认使用 mysql_native_password
插件认证,可以在配置文件中(D:\Program Files\mysql-8.0.11-winx64\my.ini
)配置 default_authentication_plugin
项。
[mysqld]
default_authentication_plugin=mysql_native_password
到此,安装部署就完成了。
10.使用工具连接 mysql
输入连接名称,密码
连接成功
也可以使用其它工具,如 SQLyog