同时安装两个版本的mysql数据库(亲测有效)

捕捉一只小小文

于 2020-05-17 16:48:41 发布

1638
收藏 17
分类专栏: mysql
版权

mysql
专栏收录该内容
1 篇文章0 订阅
订阅专栏
在实际开发中,一些低版本数据库,不支持一些特殊的sql语句,因此高版本数据库数据导入低版本的时候就会出问题,因此,在一些特殊情况下,低版本数据库不能动,高版本mysql数据又无法导入低版本mysql,我们不得不在同一台机器上安装两个版本mysql.

低版本mysql不支持的sql语句举例,比如下面的这个:

CREATE TABLE sche_task (
id INT(11) NOT NULL AUTO_INCREMENT,
message VARCHAR(50) NOT NULL,
task_excute_time DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) ENGINE=INNODB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;
在5.5.28 版本的mysql上执行上面语句会报错

而在5.7.17版本的mysql就支持双时间戳timestamp.可以正常执行上述sql语句

第一步:先停止之前安装的低版本mysql服务:

第二步:将下载好的mysql-5.7.17-winx64.zip解压

第三步:解压完成之后,进入该文件夹,然后打开my-default.ini,进行修改端口号,端口号改为3307,basedir和datadir也要重新配一下

[client]
port=3307
mysql]
no-beep
[mysqld]
port = 3307
basedir=C:\mysql-5.7.17-winx64
datadir=C:\mysql-5.7.17-winx64\data
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
explicit_defaults_for_timestamp=true

四 开始执行安装和添加服务的步骤:

1.以管理员身份去运行命令行窗口

2.进入mysql5.7.17的bin目录下

  1. 安装mysql服务,指定该mysql服务名为mysql2,并根据my-default.ini文件进行安装,命令如下:

C:\mysql-5.7.17-winx64\bin>mysqld install mysql2

成功安装后会提示:
Service successfully installed.
去服务里面,可查看到此时多了一个mysql2服务

五 初始化数据库

mysql服务安装成功后,就需要初始化数据库了,否则是无法启动服务的。

在bin目录下执行如下命令

C:\mysql-5.7.17-winx64\bin>mysqld --initialize-insecure (不设置root密码,建议使用)
初始化成功后,命令行没有任何提示。但在mysql5.7.17文件夹中已自动生成了data目录

六 打开注册表,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mysql2,修改ImagePath参数,更正mysql2服务相关路径。

七 启动数据库,修改密码

使用net start mysql2 命令启动mysql2服务

C:\WINDOWS\system32>net start mysql2
mysql2 服务正在启动 .
mysql2 服务已经启动成功。

使用默认密码进行登录(注意:P 端口,p 密码)

输入“mysql或者mysql -hlocalhost -uroot -p”一回车 密码默认没有 直接回车就行 显示如下:

mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 84
Server version: 5.7.17 MySQL Community Server (GPL)

Copyright © 2000, 2016, 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> set password for root@localhost=password(‘123456’);

成功以后 Query OK, 0 rows affected, 1 warning (0.00 sec)
使用 quit 退出,使用新密码登录。

完成!!!

在这里需要注意的几点:
① : 你在看网上的教程配置完my.ini(自己的mysql配置文件)后不能自己创建一个data文件夹。

好多人,包括楼主也是,配置完datadir属性后觉得这个存储数据的文件夹路径没有呀,自己动手建一个呗。错就错在这里,
不能动手建,你自己动手建的data文件夹里怎么可能有mysql启动所需要的表结构配置文件呢?

② :在使用net start msql的时候提示“服务报告没有任何错误”。

安装完mysql服务后迫不及待的开启mysql服务,在mysql5.7以上版本中默认没有一个data目录,即没有初始化服务。需要先初始化mysql才可以启动服务,
否则会报 “服务没有报告任何错误”,启动失败呗。

正确的步骤是:先在mysql的bin目录下执行mysqld --initialize-insecure (不设置root密码,建议使用)命令,第一次执行这个命令会等待的时间稍微长了一些,
并且控制台没有任何返回结果。可以看到mysql的根目录下会多出一个data文件夹,里面一堆文件。

③ :没有先执行mysqld --initialize-insecure (不设置root密码,建议使用),而是先执行net start mysql了,启动失败,mysql会自动创建一个data文件夹,并在里面初始化一些文件,在再次执行mysqld - initialize的时候并没有把data文件夹删除。

此时的解决方案是:删除data文件夹,然后执行mysqld - initializemysqld --initialize-insecure (不设置root密码,建议使用),再启动mysql。

————————————————
版权声明:本文为CSDN博主「捕捉一只小小文」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/winwinwin99/article/details/106175669

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐