WINDOWS服务器同时安装多个版本的MYSQL的方法,MQYSQL5和MQYSQL8的共存。

编辑:睿儿发表于:2020-08-05 18:06:13 86 次阅读
原创声明:本内容(WINDOWS服务器同时安装多个版本的MYSQL的方法,MQYSQL5和MQYSQL8的共存。)为睿儿网络原创作品,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表。如需转载请联系站长QQ:7280374 请注明申请文章转载!

服务器上已经有了MYSQL5.X,但因为需要还需要再安装一个MYSQL8,查了一下大概的意思就是 只要服务名和端口别重复就可以同时共存。

所以我们只需要再去服务器上装一个MYSQL8就可以让服务器同时兼容多个版本的MYSQL,顺便重新整理一下MYSQL8的安装过程:


方法还是一样,首先把MYSQL8和系统对应的操作版本压缩包拷备在需要安装的机器上面,并解压,重命名文件夹为mysql8 。

之前说的是要先配置环境变量 和 新建 data文件夹,后来发现高版本的mysql安装不需要data文件夹,如果创建了反而它会不成功,今天先试一下环境变量都不给,直接操作的方式。


my.ini还是必须要有的,所以先建一个my.ini

mysql.ini文件的内容如下

[mysqld]

# 设置3306端口

port=3307

# 设置mysql的安装目录

basedir=D:SOFT_PHP_PACKAGEmysql8

# 设置mysql数据库的数据的存放目录

datadir=D:SOFT_PHP_PACKAGEmysql8data

# 允许最大连接数

max_connections=200

# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统

max_connect_errors=10

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

character-set-server=utf8mb4

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

default-storage-engine=INNODB

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

default_authentication_plugin=mysql_native_password

[mysql]

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

default-character-set=utf8mb4

[client]

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

port=3307

default-character-set=utf8mb4

因为高版本的MYSQL字符编码要求使用 utf8mb4 ,要不然在初始化的时候会报一个警告。 在这个配置文件里面把端口号改为 3307 


使用管理员模式启动命令行工具,使用初始化命令进行初始化 。。一定要使用管理员模式启动【本来一开始是没配置环境变量的,但由于出错次数太多,后来配置了,所以也不知道是环境变量是否影响运行。】

CMD 路径  C:WindowsSystem32 


image.png


把目录定位到mysql8的BIN目录里面


image.png


接下来正常方式应该是 运行命令 mysqld --initialize --console  来安装服务,,但因为我们是多版本安装,所以这儿要改一下把实例名称加上。

网上搜索的方法

1 mysqld install mysql2 --default-file="D:Program Filemysql-8.0.15-winx64my.ini"

在这里插入图片描述

可以发现 它们都是在 install后面跟了实例名,然后又跟了my.ini的路径,但都没有加后面的 --console    我们来实际试一下。


我使用的方法为:mysqld --initialize mysql8  --default-file="路径my.ini"

运行后 

image.png

并没有提示 安装成功  但我发现它自已创建了data目录,去服务里面看了一下,并没有创建mysql8的服务实例名称【因为这个命令只负责初始化MYSQL】。


还是因为出错太多,一气瞎整之后成功了,一激动就把所有窗口都关了,所以下面无截图,靠着记忆把流程写一下吧。


还是在BIN目录的 CMD下面运行。

mysqld --initiailize --user=mysql --console 

或者

mysqld --defaults-file=你的目录mysql8my.ini --initialize --console 初始化


这回加了 --console  初始化成功,但不记得用的是这两个哪个命 令了,应该都可以,这个时候可以不用加实例名称。


运行了这个命令之后会在目录中生成data 文件夹,这个时候是不会创建服务的,只是初始化了MYSQL实例。

初始化的时候会给一个临时密码,需要记下来,等会儿修改密码的时候用。


初始化了之后可以安装服务(安装了服务之后,在注册表和服务里面就会出现相应的服务项)

mysqld -install mysql8 (可能最后是用的这个,但注册表里面会添加ini文件的路径,所以下面那个也有可能,因为之前执行了很多回,注册表里早就有路径了。所以最后用这个就成了。)

或者

mysqld install  mysql8  --default-file="你的目录mysql8my.ini" 


反正这一步执行是安装服务用的,,执行了命令之后在服务里面会出现 mysql8的服务项

然后去注册表看一眼:HKEY_LOCAL_MACHINE -> SYSTEM -> CurrentControlSet -> services ->

找到你新建的实例 mysql8 看一下 ImagePath参数 ,总之最后 ImagePath参数为: 你的目录mysql8inmysqld --defaults-file="你的目录mysql8my.ini" mysql8 这种格式就对了。这个就相当于指定了服务使用哪个配置文件。

这时候就可以 合用 net start mysql8 来启动你的服务了。

启动服务的时候也有很多问题,我碰到的一开始是 服务一启动就关闭,可能是因为ini文件哪儿写的不合适,后来把INI文件改了之后就启动成功了。


启动之后,需要先把密码修改掉。


mysql –uroot –P3307 –p  因为使用了3307端口,所以需要在这儿加上端口,我怀疑最早之前我就安装成功了,只是这一步的时候没有加端口,所以导致最后又重装了N次。


这时候会让你输入密码,把之前初始化的时候那个密码输进来就可以了。

要是密码没记得怎么办?

可以停掉 mysql8服务  再把目录中的data文件删除掉,重新mysqld --initiailize --user=mysql --console 初始化一下 ,再记住密码就好了。这个初始化可以执行多次。只要没有data文件夹就可以跑起来。

输入密码之后就进到mysql控制台了 你的 CMD里面会显示为


mysql>  


这样的。


这时候 先改一下密码: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码';


这步没什么可说的,直接提示修改成功。


然后 用命令 show global variables like 'port'; 查看一下端口。发现用的是3307  说明已经成功了。


用 Navicat Premium 新建了一个链接。端口写 3307 输用户名密码测试链接成功。。


不放心又写了一个链接程序试了一下。

$serve = 'localhost:3307'; //mysql地址

$username = 'root'; //mysql用户名

$password = '密码'; //mysql密码

$dbname = '数据库名'; //mysql数据库名称

@$mysqli = new Mysqli($serve,$username,$password,$dbname); //连接mysql     

if($mysqli->connect_error){//连接mysql  

die('connect error:'.$mysqli->connect_errno);

}

$mysqli->set_charset('UTF-8'); //设置数据库字符集


连接成功,可以跑。。

至此 WINDOWS服务器同时安装多个版本的MYSQL 并且是兼容 MYSQL8的方式算是完美解决了。服务中上可以同时跑两个版本MYSQL。。。折腾一天,测试无数次。总算成功了。谢天谢地,谢百度大神们。

原文地址:/library/202008/23.html(张家口导航-睿儿知识库)

张家口睿儿网络科技有限公司版权所有