win下安装多个MySQL注意点

  本机默认安装一个mysql56服务器,因为想要验证mysql57一个字符集相关的特性,所以打算在本机再装一个,安装方式采用的是压缩包的方式,非通过mysql-installer-community方式安装。坑太多了,心累的一天!:happy:

bug点陈列

1、MySQL57安装初始化之后,my.inf文件夹指定的目录没有创建,my.inf根本没有起作用。
2、MySQL57密码问题:用初始生成的密码登录,密码输入正确依旧被否认,利用mysql --skip-grant-tables修改密码多次,依旧登录不上。

问题复现及解决

其实开始安装MySQL57时,my.ini文件没有生效是导致一连串bug的根源。my.ini文件为什么没有生效呢?
复现:
关闭mysql56服务,下载mysql57安装包并解压,新建my.ini文件到mysql57安装目录,目录内容如下:

[mysqld]
#skip-grant-tables
port = 3306
basedir=E:\\mysql-5.7.31-winx64
# 数据库文件存放地址
datadir=E:\\mysql-5.7.31-winx64\\Data 
# 最大连接数
max_connections=200
character-set-server=utf8
[mysql]
default-character-set=utf8

之后执行mysql初始化命令,mysql --initialize--insecure得到一个随机码,这时候我发现E:\\mysql-5.7.31-winx64\\Data这个目录并没有生成,经查询它默认配置到了MySQL56所在的目录,我一看这不行啊,考虑到如果数据文件越来越大,必须将数据文件转移到其他盘而不是MySQL56所在的C盘。

为什么my.ini文件配置失效?

文件分隔符,其实双反斜杠和单正斜杠都可以经查询,排除。

我没有配置MySQL57目录下/bin的环境变量,并且cmd下操作的命令不是在mysql57安装bin目录下进行的,那么本机就会使用MySQL56的环境变量,那么就相当于将MySQL56初始化了一遍,而不是MySQL57,所以存在两种解决方案:(1)将MySQL57的环境变量添加到系统变量置于MySQL56的环境变量之前。(2)不添加MySQL57环境变量,在MySQL57的bin目录下运行命令。

我采用了(2),my.ini文件作用生效,data目录在MySQL57安装目录成功生成。之后执行安装MySQL57服务,cmd显示服务成功安装,之后启动服务,登录

# mysql57位服务名
mysql --install mysql57
net start mysql
# 删除mysql57服务
sc delete mysql57

当输入用户名密码的时候,输入的密码一定正确,但被否认了,当我只输入用户名,不输入密码的时候直接回车却能够进入数据库,但是只有一个访客权限,数据库只存在information_schema,没有mysql数据库,这显然不是root用户该有的样子。多次输入无解之后,只能通过修改一下密码尝试一下。接着又是一通操作:

# Linux或者win如果忘记密码,都可以使用这种方法,一种是命令行,一种是配置文件方式

# 1.跳过密码之前的配置
# 1.1.配置文件方式
# my.ini或者my.cnf,在[mysqld]添加skip-grant-tables
# 重启服务

# 1.2. 命令行方式(win)
# 关闭服务
# bin目录cmd中执行
mysqld --skip grant tables
# 这时光标卡住,这是正常的反应

# 2.更改密码
# 通过1.1或者1.2任意一种设置,都可以免密进行登录,这里以1.2方式讲解
# bin下新开cmd窗口,输入
mysql -uroot -p #两次回车
# 进入mysql,update pwd
use mysql;
update user set authentication_string =password('new_pwd') where user='root';
flush privileges;
# 退出之后开启服务再次登录

【注】mysql57之后mysql下的user表没有password字段了,也就是说不能set password=xxx,新版本的数据库将利用password函数将字符串(password)加密后设置到authentication_string这个字段中。其实还有多种更改mysql用户密码的方式。

改完密码之后,我尝试着再次登录结果还是无果。

初始登录失败,密码修改之后,还是登录失败!

之后百度了很多帖子,直到遇到了,总算解决了!

当我查看我的注册表的时候cmd->regedit,注意到这样的一个值计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mysql57,Services下存在两个mysql,一个是56,一个是57,博文中介绍的点是要修改ImagePath的值。我观察到我的mysql57中ImagePath的值竟然和mysql56的值相同,这就不应该了,mysql57应该使用它目录下的mysqld、data等等。所以我将值改为了mysql57目录,再次登录,密码正确,成功!

出现以上bug的原因,就是刚开始my.ini文件没有生效,编译安装之后使用的是MySQL56的配置,当再次做其他操作的时候,结果就会出现很多意外的错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值