已解决:WIN10安装MySQL8.x教程 + 解决遇到问题The designated data directory /data is unusable. You can remove
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成功了!
更多推荐
所有评论(0)