zoukankan      html  css  js  c++  java
  • 【mysql升级步骤】windows mysql版本升级 ,mysql 5.6 升级到5.7.27

       最近博主由于工作原因需要把之前安装好的的mysql 5.6.44版本卸载,然后安装mysql 5.7.*版本。

    前提:为什么要升级到5.7版本?

    因为博主在5.6版本上执行脚本时候报出异常:to your MySQL server version for the right syntax to use near 'json DEFAULT...

    大概意思是5.6版本不支持原生json 数据的插入 

    度娘说:MySQL5.7版本终于支持了原生的JSON格式,即将关系型数据库和文档型NO_SQL数据库集于一身。

    链接地址:http://www.bubuko.com/infodetail-1777950.html

    所以不得已要升级到5.7,期间走了很多弯路,遇到很多坑,现总结如下,希望能帮助到你:

    安装过程十分艰辛,遇到了好几个错误总结如下:

    1:Can't connect to MySQL server on 'localhost' (10061)

    2:-initialize specified but the data directory has files in it. Aborting

    3:TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults

    4:Can't open the mysql.plugin table. Please run mysql_upgrade to create it.

     解决方案,无非就是需要注意几点:

    1:某些命令一定要在管理员权限下执行,就是用管理员模式开启命令提示符

    2:某些命令一定要在mysql/bin  目录下执行,文章中有标出

    3:mysql 5.7默认是无data文件夹的,net start mysql  #启动mysql  命令一定要保证有data文件夹

    4:mysql 5.7.27版本 my-default.ini  不能写port=3306 不然会报错

    5:有时候错误需要在my-default.ini 文件中加入explicit_defaults_for_timestamp=true

    6:查看mysql启动错误命令     mysqld --console

     7:如果遇到中途的mysql配置路径错误导致服务中存在mysql

    如:mysqld install MySQL --defaults-file="D:mysql5.7.27mysql-5.7.27-winx64my-default.ini" #安装新版本mysql    这里边的ini路径输入错误后 回车,系统服务中会存在mysql,但是启动不了),

      执行sc delete mysql 删除不掉服务的情况,需要打开任务管理器中找到mysql进程关闭之后再  执行sc delete mysql就可以成功删除mysql 服务了

    8:如果在安装过程中某一步错误,导致需要重新执行安装mysql命令,切记需要保证(D:mysql5.7.27mysql-5.7.27-winx64data)data 路径下为空,如果有文件要删除后执行安装命令。

    第一步:官网下载mysql5.7.27 zip文件,官方地址:https://dev.mysql.com/downloads/mysql/

    有32位和64位两个版本,博主64位点击下载

    第二步:下载好之后解压

    第三步:文件夹里面默认没有my-default.ini文件,需要我们新建一个basedir和datadir需要改成你安装的路径地址,以下是我的my-default.ini配置

    [mysql]
    # 设置mysql客户端默认字符集
    default-character-set=utf8 
    [mysqld]
    # 设置mysql的安装目录
    basedir = D:Mysql5.27mysql-5.7.27-winx64
    # 设置mysql数据库的数据的存放目录
    datadir = D:Mysql5.27mysql-5.7.27-winx64data
    # 允许最大连接数
    max_connections=200
    # 服务端使用的字符集默认为8比特编码的latin1字符集
    character-set-server=utf8
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    # 如果需要的存储引擎被禁用或未编译,可以防止自动替换存储引擎
    # 为事务存储引擎启用严格模式,也可能为非事务存储引擎启用严格模式
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
    # 开启查询缓存
    explicit_defaults_for_timestamp=true
    

      

    MySQL 5.7版本中sql_mode更加严格。解释下各个mode的含义:
    
    ONLY_FULL_GROUP_BY             不要让GROUP BY部分中的查询指向未选择的列  
    STRICT_TRANS_TABLES                为事务存储引擎启用严格模式,也可能为非事务存储引擎启用严格模式
    NO_ZERO_IN_DATE                      在严格模式,不接受月或日部分为0的日期
    NO_ZERO_DATE                          在严格模式,不将 '0000-00-00'做为合法日期
    ERROR_FOR_DIVISION_BY_ZERO   在严格模式,在INSERT或UPDATE过程中,如果被零除(或MOD(X,0)),则产生错误  
    NO_AUTO_CREATE_USER             防止GRANT自动创建新用户,除非还指定了密码
    NO_ENGINE_SUBSTITUTION          如果需要的存储引擎被禁用或未编译,可以防止自动替换存储引擎
    
    注意:在一个主从环境下,为保证数据的一致性,一定要设置主从的sql_mode一样,在数据迁移的时候也要保证sql_mode的一致,不然复制和迁移遇到上面的限制均会失败,所以尽可能使用标准SQL语法。
    

     

    第四步:配置环境变量

     

    第五步:停止服务里边mysql

    cmd->services.msc   #打开服务

    找到mysql停止

    第六步:查看mysql版本是否正确

    cmd->mysql --help

    第七步:卸载5.6版本,这步很关键,博主找了很多资料,终于解决  参考链接:https://blog.csdn.net/qq_39701269/article/details/77935490

    cmd->sc query mysql        #管理员身份运行,输入sc query mysql,查看一下名为mysql的服务

    sc delete mysql #删除该mysql

    第八步:安装mysql 5.7.27 参考链接:https://www.cnblogs.com/super-wking/p/10551936.html

    1:安装Mysql命令如下:

    mysqld install MySQL --defaults-file="D:mysql5.7.27mysql-5.7.27-winx64my-default.ini"  #安装新版本mysql
    

      

    2:获取mysql临时密码如下

    注意:一定要进入到mysql安装bin目录下执行以下命令!!!!

    mysqld --initialize --user=mysql --console  #初始化 获取root随机密码 “root@localhost”后的随机字符串就是root的临时密码。
    

      

    注意:如果出现如下情况,说明CMD没有以管理员身份打开,以管理员身份打开后执行即可

    3:启动mysql

    注意:一定要进入到mysql安装bin目录下执行以下命令!!!!

    net start mysql #启动mysql
    

      

    第九步:修改mysql密码

    mysql -u root -p #进入mysql输入之前的临时密码
    

      

    第十步:设置root新密码

    set password = password('root');

     设置成功后exit 退出,重新执行以下命令,密码是你自己设置的,我设置的密码是root

    mysql -u root -p

      

    至此mysql升级完毕!!!

    添加新用户权限:

    grant select,insert,update,delete on book.* to test@localhost Identified by "abc";

    参考链接:https://www.cnblogs.com/wanghuaijun/p/5802209.html

    给某个用户某个数据库权限

    GRANT  select,insert,delete,update  ON  testdb.*  TO 'test'@'%';

    参考链接:https://www.cnblogs.com/tianrunzhi/p/8316141.html

  • 相关阅读:
    jquery height
    正则表达式的一点奇怪
    this和call
    ajax views
    史上变态的模块
    在php中有什么用
    localhost访问不了
    $.extend abc
    $.extend
    和人沟通的一个要点
  • 原文地址:https://www.cnblogs.com/wbl001/p/11314887.html
Copyright © 2011-2022 走看看