zoukankan      html  css  js  c++  java
  • 升级mysql

    业务是 ,5.0,和5.1的升级到5.6.10 ,engine 有innodb 共享tablespace ,myisam ,两者都有。

    instance 的schema 很多。

    升级测试,之前的数据库mysqldump --all-database dump 出来,然后导入新的5.6里面去

    用root登录

    show grants 

    GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
    | GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION

    不对啊,正常应该是

    | GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
    | GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION |

    而且没法用grant 改root@localhost的密码,就是说这样dump出来再导入是有问题的。权限表没有被修复。

    mysql_upgrade的本质是三步,其中有重要的一步就是fix 权限表。多用户状态下,权限表不能用意味着用户没法用。

    当然这里没用mysql_upgrade,这里用的是逻辑备份,也就是说不能无脑的mysqldump --all-database,再导进去,这样权限表会有问题,

    试了一下,发现这样做可行,分别导出schema ,然后分别导入,最后用脚本修复权限表。这样应该兼容性会非常不错。

    导出权限,我用了

    http://www.cnblogs.com/sunss/archive/2011/01/05/1926156.html 这里的方法。这样基本上完全ok了。5g数据量也不大,中断1小时可以搞定。

    ====================================================

    这里发现一个问题,就是5.6 ,password 用了新的hash算法,和5。1的不一样了,grant会报错。看来只好把密码找出来脚步 写个sql 语句连接一下了,好像,所以用户的权限都是类似的,一个用户对应一个schema .虽然5.6提供了一个参数,old_password=1 可以兼容以前的hash ,但是试下来似乎不行的。

  • 相关阅读:
    AR路由器web界面每IP限速配置方法
    传输层:TCP 协议
    从需求的角度去理解Linux系列:总线、设备和驱动
    京东的个性化推荐系统
    数据挖掘-MovieLens数据集_电影推荐_亲和性分析_Aprioro算法
    Linux时间子系统之七:定时器的应用--msleep(),hrtimer_nanosleep()
    Linux SPI总线和设备驱动架构之四:SPI数据传输的队列化
    拦截器及 Spring MVC 整合
    表现层 JSP 页面实现
    Controller 层实现
  • 原文地址:https://www.cnblogs.com/gqdw/p/2910905.html
Copyright © 2011-2022 走看看