服务器上已经有了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 

本地安装两个版本MySQL无法启动 mysql两个版本共存_mysql安装了老版本

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

本地安装两个版本MySQL无法启动 mysql两个版本共存_mysql windows安装_02

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

网上搜索的方法

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


本地安装两个版本MySQL无法启动 mysql两个版本共存_windows pip安装方法_03

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

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

运行后 

本地安装两个版本MySQL无法启动 mysql两个版本共存_本地安装两个版本MySQL无法启动_04

并没有提示 安装成功  但我发现它自已创建了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。。。折腾一天,测试无数次。总算成功了。谢天谢地,谢百度大神们。