1、问题描述

WIN10安装的MySQL久一点不用了,发现突然用不了了。

怎么搞也搞不回来了,一怒之下重装了,重新下载了一个更新的版本下来,解压

用了之前的配置文件(之前的配置导致我重新安装初始化出现问题)。

我遇到的问题原因就是MySQL8不给你破坏原则,初始化时配置文件不能有多余的设置,大家可以直接复制我下面这份也可以用,多余的设置注释掉了。

特别注意!!!   data文件夹”不能自己手动创建,初始化的时候会自己创建

创建配置文件并命名为:my.ini,并且将这个文件放在解压出的 MySQL 根目录下(跟bin\目录平级)

[mysqld]

# 设置3306端口

port=3306

# 设置mysql的安装目录

basedir=G:/Server/mysql-8.0.21-winx64
# 设置mysql数据库的数据的存放目录

datadir=G:/Server/mysql-8.0.21-winx64/data

# 允许最大连接数

max_connections=200

# 允许连接失败的次数。

max_connect_errors=10

# 服务端使用的字符集默认为UTF8

character-set-server=utf8

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

default-storage-engine=INNODB

# 默认使用“mysql_native_password”插件认证

#mysql_native_password

default_authentication_plugin=mysql_native_password

default-time-zone='+08:00'
#sql_mode="STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

[mysql]

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

default-character-set=utf8

[client]

# 设置mysql客户端连接服务端时默认使用的端口

port=3306
default-character-set=utf8

一直提示报错如下:

最开始没注意到第一个报错的信息,以为是什么初始化的东西,最后才发现是以前配置文件中有的一行内容(以上配置文件中sql_mode=""这一行,这一行是以前使用的 MySQL 留下来的配置,初始化的时候不能有这行),然后将其注释掉就可以初始化了。

如果非要加这一行,那么请注意:

MySQL8以后sql_mode以上已经取消了NO_AUTO_CREATE_USER这个关键字。如果加上这个字段你,会导致MySQL无法启动!!!去掉这个关键字,完美启动,所以上面配置文件中sql_mode变成以下内容:

sql_mode="STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"

真是见鬼了,这个小问题搞了我一晚上没发现。

这里补充一下sql_mode各项说明:

ONLY_FULL_GROUP_BY: 对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP
BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中
 
NO_AUTO_VALUE_ON_ZERO: 该值影响自增长列的插入。默认设置下,插入0或NULL代表生成下一个自增长值。如果用户
希望插入的值为0,而该列又是自增长的,那么这个选项就有用了。
 
STRICT_TRANS_TABLES: 在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制
NO_ZERO_IN_DATE: 在严格模式下,不允许日期和月份为零
 
NO_ZERO_DATE: 设置该值,mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告。
 
ERROR_FOR_DIVISION_BY_ZERO: 在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。如
果未给出该模式,那么数据被零除时MySQL返回NULL
 
NO_AUTO_CREATE_USER: 禁止GRANT创建密码为空的用户
 
NO_ENGINE_SUBSTITUTION:
如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常
 
PIPES_AS_CONCAT:
将”||”视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似
 
ANSI_QUOTES: 启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符

然后安装就很顺利了,

1、以管理员的方式打开 cmd,进入到解压的 mysql 文件夹的\bin目录下

2、执行

mysqld install

3、执行

mysqld --initialize --console

然后出现下面的初始化密码,注意等下用这个改密码,所以记录下来吧~

4、执行

net start mysql

 5、然后成功启动

6、配置MySQL环境变量:右键此电脑 -> 属性 -> 高级系统设置 -> 环境变量 

在系统变量下面新建,MYSQL_HOME 作为键,你解压的MySQL路径为值,例如我的路径是:G:\Server\mysql-8.0.21-winx64

 确定即可

7、配置Path,在系统变量下找到Path,双击,新建,输入%MYSQL_HOME%\bin

(或者你上面不先设置 MYSQL_HOME 变量,直接把 MySQL 的bin目录全路径添加到 Path 变量中也可以,无非就是要你的 .exe、.cmd之类的命令所在的目录添加到系统的环境变量Path 中即可。以上编辑 MYSQL_HOME 这种就类似先声明一个变量,等下在使用的时候通过在 Path 中使用%%引用它再接上\bin就是其完整的目录)

 确定即可完成环境变量的设置

8、修改密码

在cmd下输入以下命令登录到 MySQL

mysql -uroot -p

输入刚才的临时密码,Enter,如下显示已经成功登录了MySQL8

接下来正式修改密码,命令

ALTER USER 'root'@'localhost' identified with mysql_native_password by '你的密码';

 如下图成功了,注意密码用英文的单引号括起来

启动MYSQL:net start mysql
停止MYSLQ:net stop mysql

这样子就重新安装 MySQL成功了!

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐