0x00前言
由于这几天要参加一个互联网+的比赛 由于需要用到python django 的框架 但是发现django 2.2 与我 mysql 5.5 的版本无法兼容导致我django在迁移数据库的时候总是迁移失败 没办法又不想把原来的那个数据库卸载 所以经大牛指点 多版本可以兼容 故花了几个小时捣鼓了出来
0x01数据库5.5版本重设过程
首先我想要安装新的数据库我想着那先把之前的那个数据库的服务给停了吧 便输入 net stop mysql 结果cmd里面跳出来一段文字说我这个服务名无效 这说明我之前数据库也没有弄好啊 所以先把老版本的东西给整清楚呗 首先进入到数据库的bin文件夹下 输入mysqld --install 进行一个安装 如果安装成功会显示成功安装 然后再net start mysql 又不对了 新的问题显示 您的服务无法启动 也没有错误 这个我是通过对mysql下的data进行初始化解决的 就是在命令行输入 mysqld --initialize 这是讲data初始化成密码为root 的账号 然后我们使用net stop mysql 把服务停掉进行我们重头戏 mysql 8.0 的安装 (由于博客是最后写的所以前面的图片并没有截图有可能看起来不直观 后面mysql 的安装会附图 也会更加的详细)
0x02数据库8.0版本安装过程
首先从mysql官网下载mysql8.0的版本 我这里用的不是msi格式是压缩包解压出来
解压出来的时候mysql8.0 是没有 my.ini 这个数据库配置文件 所以这里是需要自行添加 代码如下
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
#log_bin
# These are commonly set, remove the # and set as required.
basedir = D:\mysql8.0
datadir = D:\mysql8.0\data
port = 3307
server_id = 1
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
join_buffer_size = 128M
sort_buffer_size = 2M
read_rnd_buffer_size = 2M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
然后把basedir和datadir修改成你自己的路径 由于之前那个数据库是用3306 端口的 所以这里我把端口修改成3307 这样就不对端口冲突了 通过管理员打开cmd 进入到mysql bin的文件夹下 输入 mysqld --defaults-file=D:\mysql8.0\my.ini --initialize --console
由于当时没有截图 所以这里是拿网上的图片 然后箭头指的地方是你的数据库密码要先记录下来 这里是初始化数据库的data 下面我按照网上的教程来总会 服务启动不了 所以便自己来 输入 mysqld --install mysql2 这里我定义mysql8.0 的服务名是mysql2 你也可以换成别的名字 然后显示安装成功 ok
下一步我们要在注册表里面修改路径因为不修改的话 这个路径其实还是指向原来那个数据库的所以我们要进行修改 运行窗口 -> regedit 进入到注册表 ->HKEY_LOCAL_MACHINE进入到这个文件夹 ->SYSTEM找到这个 ->CurrentControlSet进入到这个->services进入到这个 ->然后在这里面找到你设置的mysql服务 找到image path
然后将数值数据换成你的mysql8.0的路径 然后net start mysql2 ok服务成功启动 然后通过之前保存的密码 通过 mysql -uroot -p -P 3307 回车输入密码进行进入
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
flush privileges; 进行修改密码 但是由于mysql8 的密码是用了一个加密模块的 所以在下次登录会显示报错 我在网上找了很多但是发现 大多数都是通过使用以前的密码类型 也就是不使用加密模块的 来解决 ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY '111111'; 其实个人认为这样不是很好 但是一时又没有找到 加插件的方法所以先用了如上的方法 解决
好不容易弄完之后想着重启一下吧看看还正不正常 结果 !!! 果然出问题了 我原来的一个mysql服务一直显示正在启动中 差了些资料 应该是还有残余 程序 所以
tasklist| findstr "mysql" 列出残余项目进程
taskkill/f /t /im mysqld.exe 管理员cmd下 全部停止运行 然后再net start mysql 就可以了
成功~~~~