文章目录

  • windows中在安装一个mysql
  • 什么情况
  • 下载新版本的mysql
  • 安装新的mysql
  • 1、解压,配置环境变量
  • 2、增加配置文件
  • 3、初始化mysql
  • 4、根据配置文件,生成一个新的mysql的服务
  • 5、根据注册表修改服务名称
  • 6、启动服务
  • 7、测试连接



对大家有帮助的话,还请随手点个赞

windows中在安装一个mysql

什么情况

我们项目现在在做一个二开的项目,这个项目用的mysql是高版本的8.0.11,我本地的是5.7.20版本的,虽然有影响但是影响不大。
比如:5.7.20是没有这个字符集utf8mb4_0900_ai_ci,简单替换为utf8mb4_general_ci就好。
但是对于函数这块,影响很大的。5.7.20是没有这个REGEXP_REPLACE函数的。。。
算了还是在来一个高版本的数据库吧!

下载新版本的mysql

MySQL Community Server 8.1.0 下载地址

一台服务器支持多个mysql 一台服务器装两个mysql_初始化


看个人需要,我一般都是能下载绿色版的就下载绿色版本的。

安装新的mysql

本次只讲解绿色版本的安装,也就是在windows上再安装一个高版本的mysql

1、解压,配置环境变量
  • 将包进行解压,我这是解压到了一个新建的目录下F:\mysql,最后确定安装目录为F:\mysql\mysql-8.0.32-winx64
  • 配置环境变量:就是在环境便令中path中配置mysqlbin目录,这样做是为了让mysql这个命令生效,否则要想使用mysql这个命令,要么去安装目录下直接执行命令文件,要么使用全路径的命令文件进行执行。
2、增加配置文件
  • 自己新建一个文件,名为my.ini,位置自己随意放,最后启动的时候,需要指定这个文件路径,我这放到了安装目录下:F:\mysql\mysql-8.0.32-winx64\my.ini
  • 填写配置信息:注意修改项
[mysqld]
#启动端口。
#注意:我电脑上已经存在一个低版本的mysql服务了,如果他也是3306,那意味着两个版本的mysql不能同时启动
port=3308

# 字符集 这个可以自从字符集表中查询,一般都是utf8mb4。
#character_set_server=utf8
character-set-server=utf8mb4

#mysql的安装路径。咱的是这个
basedir=F:\mysql\mysql-8.0.32-winx64

#数据库数据文件存放位置
datadir=F:\mysql\mysql-8.0.32-winx64\data

#当前mysql服务的id,一般自动生成。一般设立主从的时候,用于标识哪一台服务,注意server-id不要重复,否则建立主主从的时候,容易踩坑。
#建议禁掉。我这直接注释掉了,本地弄啥主从啊,当年这个地方坑的我不轻。
#server-id=1

#语法校验规则,这个内容太多,不多赘述,感兴趣的自己搜索。可以去掉,使用用默认规则就好
#sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

#这个是指是否大小敏感。设置为1即可
#0 --大小写敏感。(Unix,Linux默认) 创建的库表将原样保存在磁盘上。如create database TeSt;将会创建一个TeSt的目录,create table AbCCC …将会原样生成AbCCC.frm。 SQL语句也会原样解析。
#1 --大小写不敏感。(Windows默认) 创建的库表时,MySQL将所有的库表名转换成小写存储在磁盘上。 SQL语句同样会将库表名转换成小写。 如需要查询以前创建的Testtable(生成Testtable.frm文件),即便执行select * from Testtable,也会被转换成select * from testtable,致使报错表不存在。
#2 --大小写不敏感(OS X默认) 创建的库表将原样保存在磁盘上。 但SQL语句将库表名转换成小写。
#原文:On Windows the default value is 1. On macOS, the default value is 2. On Linux, a value of 2 is not supported; the server forces the value to 0 instead.
#在Windows上,默认值为1。在macOS上,默认值为2。在Linux上不支持值2;服务器强制该值为0。
lower_case_table_names=1

#是否使用独立引擎空间。
#使用后,mysql将修改InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间
innodb_file_per_table = 1

#时区,一般跟随系统就好。像个性化的,可以更换为其他的时区地点
log_timestamps=SYSTEM
 
#错误日志名称
log-error=error.log
#是否开启慢查询日志
slow_query_log=1
#慢查询日志名称
slow_query_log_file=slow.log
#查询时间大于5s的,会被记为慢查询,sql会写入慢查询日志中
long_query_time=5 
#下面两个是 binlog的设置,一般设置主从的时候才设置的。我直接注释掉了,毕竟自己本地启动,开啥主从啊。
#log-bin=binlog
#binlog_format=row
#日志存储天数。即过期时间。
expire_logs_days=15
#这个表示是否信任那些函数的创建者,信任则允许写入日志,否则不允许。
log_bin_trust_function_creators=1

#secure-file-priv 参数用于限制LOAD DATA, SELECT …OUTFILE, LOAD_FILE()传到哪个指定目录。
#secure-file-priv 为 NULL 时,表示限制mysqld不允许导入或导出。
#secure-file-priv 为 /tmp 时,表示限制mysqld只能在/tmp目录中执行导入导出,其他目录不能执行。
#secure-file-priv 没有值时,表示不限制mysqld在任意目录的导入导出。
#喜欢数据导出到固定文件夹的,可以设置这一项。不想设置的可以直接注释掉这行配置。我直接只没有配置这一项。
#secure-file-priv=C:\mysql-5.7.39\uploads
 
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3308
#字符集
default-character-set=utf8mb4

最后提供一下,我这边纯净的my.ini文件。
大家用的时候,只要修改 portbasedirdatadir主要修改这三项,改成自己的就好了。
主要的就是这三项,其他的都可以去掉,使用默认的也可以了。

[mysqld]
port=3308
character-set-server=utf8mb4
basedir=F:\mysql\mysql-8.0.32-winx64
datadir=F:\mysql\mysql-8.0.32-winx64\data
lower_case_table_names=1
innodb_file_per_table = 1
log_timestamps=SYSTEM
log-error=error.log
slow_query_log=1
slow_query_log_file=slow.log
long_query_time=5 
expire_logs_days=15
log_bin_trust_function_creators=1

[client]
port=3308
default-character-set=utf8mb4
3、初始化mysql

这个地方大家都不一样,有的是直接初始化,有的是指定配置文件后再安装。
咱们使用初始化的方法
首选:停掉旧的MySql服务

初始化:
mysqld --initialize

如果给你报'mysql' 不是内部或外部命令,也不是可运行的程序或批处理文件。说明你没有配置环境变量,使用全路径初始化即可
F:\mysql\mysql-8.0.32-winx64\bin\mysqld.exe --initialize
4、根据配置文件,生成一个新的mysql的服务
安装名为MySQLServer-8.0.32的服务,指定参数defaults-file为....my.ini
mysqld -install MySQLServer-8.0.32 --defaults-file="F:\mysql\mysql-8.0.32-winx64\my.ini"

注意:MySQLServer-8.0.32 是你自定义的服务名,可以修改的。install成功后,新的服务就会显示在服务列表中

一台服务器支持多个mysql 一台服务器装两个mysql_配置文件_02


服务MySQL8.0是因为我配置文件没有指定basedir,导致启动不了,最后删除了注册表。

5、根据注册表修改服务名称

如果你不太满意你刚开始起的服务名字,可以通过修改注册表中DisplayName 路径:计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQLServer-8.0.32

注意:最后一层为你的服务名称。上图中mysql8.0显示错误,是因为我删除了注册表中的mysql8.0文件夹

一台服务器支持多个mysql 一台服务器装两个mysql_一台服务器支持多个mysql_03


另外,很多时候,小伙伴们的,服务启动不起来,是因为命令中关于defaults-file参数的文件路径没有指定对,通过注册表,咱们可以修改之前的命令。

一台服务器支持多个mysql 一台服务器装两个mysql_配置文件_04

6、启动服务

这个没啥说的,任务栏-->右击-->任务管理器-->服务,找到服务MySQLServer-8.0.32,右击启动即可。

7、测试连接

对于一个新的mysql,服务咱们就起来了。可是链接是需要用户密码的。

这个其实刚开始第一次安装mysql服务的时候,已经给咱们初始化好了。

(注意:是第一次安装服务,同样的目录安装两次服务,还是同一个密码) 那个文件,就在咱们安装录下的data下,有一个计算机名字命名的 err文件

一台服务器支持多个mysql 一台服务器装两个mysql_一台服务器支持多个mysql_05


按照txt格式打开它,会有日志。如下:

2023-09-12T06:54:15.225158Z 0 [System] [MY-013169] [Server] F:\mysql\mysql-8.0.32-winx64\bin\mysqld.exe (mysqld 8.0.32) initializing of server in progress as process 12496
2023-09-12T06:54:15.329342Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2023-09-12T06:54:23.857915Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2023-09-12T06:54:29.423088Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 2YxrEnv,yggo

服务器地址:localhost
用户名:root
密码:2YxrEnv,yggo

然后通过工具Navicat进行链接数据库,会让你修改密码。
第一次启动服务的时候,可以添加参数 --console 这样日志就可以打印到CMD面板上了

然后测试两个服务是否能够同时存在:

一台服务器支持多个mysql 一台服务器装两个mysql_初始化_06


最后,两个服务都起来,进行链接测试!

链接成功!!!完美!!!!