先去官网下载点击的MySQL的下载
下载完成后解压
解压完是这个样
配置初始化的my.ini文件的文件
解压后的目录并没有的my.ini文件,没关系可以自行创建在安装根目录下添加的my.ini(新建文本文件,将文件类型改为的.ini),写入基本配置:
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=C:\Program Files\MySQL
# 设置mysql数据库的数据的存放目录
datadir=C:\Program Files\MySQL\Data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4
配置文件中的路径要和实际存放的路径一致(8.0.18不要手动创建Data文件夹)
初始化MySQL
在安装时,避免权限问题出错我们尽量使用管理员身份运行CMD,否则在安装时会报错,会导致安装失败的情况
C:\Windows\System32
右键以管理员身份运行
打开后进入mysql的bin目录
在MySQL目录下的bin目录下执行命令:
mysqld --initialize --console
注意![注意] [MY-010454] [服务器]为root @ localhost生成临时密码:9P0gYk-?0,kT其中root @ localhost:后面的9P0gYk-?0,kT就是初始密码(不含首位空格)。在没有更改密码前,需要记住这个密码,后续登录需要用到。复制密码先保存起来!!!
如果出现系统错误问题
列:这个是因为缺少微软的一些运行所需的库。这个百度一下都可以找到下载源安装一下(可能需要重启 )
安装MySQL服务 + 启动MySQL 服务
安装mysql服务
执行下面的命令:
mysqld --install [服务名] ###(服务名可以不加默认为mysql)
成功了!
服务安装成功之后通过命令
net start mysql
启动MySQL的服务
总体三步走
1初始化MySQL
2创建服务
3启动服务
到这你的MySQL已经是安装好了!
常见问题
这时候使用net start mysql,就会显示服务已经成功启动。
Can’t connect to MySQL server on ‘localhost’
然而在命令行输入mysql,却发现出现了Can't connect to MySQL server on 'localhost' 报错信息,但是查看任务管理器-服务,却发现mysql服务明明在运行。这时候查看安装目录下的 data 文件夹,可以看到一个后缀名为.err的文件。打开可以看到如下的报错信息:
2018-09-13T02:07:54.423068Z 0 [ERROR][MY-010131] [Server] TCP/IP, –shared-memory, or –named-pipe should be configured on NT OS
2018-09-13T02:07:54.423571Z 0 [ERROR][MY-010119] [Server] Aborting
2018-09-13T02:07:54.606308Z 0 [Warning][MY-011311] [Server] Plugin mysqlx reported: ‘All I/O interfaces are disabled, X Protocol won’t be accessible’
于是怀疑mysql并没有成功地设置好网络,于是看命令行netstat -ano,发现的确3306端口没有占用。
怀疑是防火墙的问题,把防火墙关闭,或者新建规则,却依然不能连接。在网上搜索了大量时间后,才发现是skip-grant-tables的问题。在官方文档里,有:
If the server is started with the --skip-grant-tables option to disable authentication checks, the server enables --skip-networking automatically to prevent remote connections.
好像是MySql8.0版本才加入了这个特性。
于是把skip-grant-tables 从my.ini去掉,或者加上shared-memory,可以解决这个问题。注意当skip-grant-tables去掉后,就必须记住生成的随机密码,然后要新建数据库,就需要alter user来更改密码。