环境:win7,已安装一台5.7.22mysql,再装一台5.7.26mysql,
mysql版本没有影响,但是第二台mysql版本建议要比第一台高。
一 先停止之前安装的低版本mysql服务:(重要)
net stop mysql57
或者在这里停止
二 去掉先前mysql的环境变量:(重要)
如果有环境变量务必要先取消,这前两步很重要,我失败了两次都是到最后启动mysql时失败,没有任何报错。
三 安装第二个mysql5.7.26
官网下载的我放度盘了 提取码:s1c2
3.1 自定义解压到指定文件夹
刚解压完是没有data目录的,不要手动创建!
创一个my.ini文件
[Client]
port = 3307
[mysqld]
#设置端口
port = 3307
#指定server-id
server-id = 2
#开启binlog日志
log-bin=mysql-bin
#指定中继日志名字
relay-log=relay-log
#跳过密码验证
# skip-grant-tables
# 设置mysql的安装目录
basedir=C:\mysql2\mysql-5.7.26-winx64
# 设置mysql数据库的数据的存放目录
datadir=C:\mysql2\mysql-5.7.26-winx64\data
#bin log日志每达到设定大小后,会使用新的bin log日志
max_binlog_size = 200M
#保留指定日期范围内的bin log历史日志,以下设置的15天内
expire_logs_days = 15
# 允许最大连接数
max_connections=200
#设置提交方式(自动提交)
autocommit=1
#隔离级别(读已提交)
transaction-isolation = READ-COMMITTED
#STRICT_TRANS_TABLES在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做任何限制
#NO_ENGINE_SUBSTITUTION如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常。
sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
端口,server-id,安装路径根据自己的修改。
3.2 进入第二个mysql5.7的bin目录下
安装mysql服务,指定该mysql服务名为mysql2,并根据my.ini文件进行安装,命令如下:
C:\mysql2\mysql-5.7.26-winx64\bin>mysqld install mysql2 --default-file="C:\mysql2\mysql-5.7.26-winx64\my.ini"
成功安装后会提示:
Service successfully installed.
去服务里面,可查看到此时多了一个mysql2服务。
3.3 初始化数据库
mysql服务安装成功后,就需要初始化数据库了,否则是无法启动服务的。
在bin目录下执行如下命令
mysqld --initialize
mysqld -install
初始化成功后,命令行没有任何提示。但在mysql5.7文件夹中已自动生成了data目录
四 修改注册表信息
打开注册表regedit,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mysql2,修改ImagePath参数,更正mysql2服务相关路径。
修改ImagePath参数。
五 启动数据库,修改密码
使用net start mysql命令启动mysql2服务(明明我设置的是mysql2,但是mysql2就是无法启动,必须是mysql,还好第一个数据库的服务名称是MySQL57,不然这里就启动不了了,反复做了好几遍,一出现无法启动没有报告任何错误,3534,基本就凉了,彻底卸载mysql重装都没用,第二个数据库会一直报这个错无法启动,也不知道是什么原因,如果是单一台数据库出现这个问题倒是还能解决,多实例就没办法了,一定要先在虚拟机上测试是否能部署成功再在服务器上部署。)
如果出现服务无法启动,没有报告任何错误,先检查下开头两步确认了没。
mysql2服务启动后,去data/xxx.err文件中找到临时密码,进行登录
使用临时密码进行登录(注意:P 端口,p 密码)
C:\mysql2\mysql-5.7.26-winx64\bin>mysql -P3307 -uroot -p
Enter password: ************ (此处输入的是临时密码)
修改密码
mysql> set password for root@localhost=password('123456');
mysql> flush privileges;
退出使用新密码登录即可。
如果在该文件没有找到临时密码,那就关闭MySQL,改下my.ini配置文件,去掉skip-grant-tables的注释,重启mysql
无密码登陆后:
update mysql.user set authentication_string=password("root") where user="root";
flush privileges;
然后注释掉skip-grant-tables重启mysql即可。
六 最后再还原环境变量,因为有两个mysql,任意用其中一个的绝对路径做变量皆可。
启动时通过不同服务名,登录时通过端口区分。
经测试,发现如果是用哪个路径的MySQL安装目录做环境变量,那么启动的时候不加端口默认就是这个路径的MySQL,也就是说如果用第二台数据库的环境变量,那么登陆3306端口的第一台数据库就必须要加上-P选项指定端口登陆了。