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 ,但是试下来似乎不行的。

  • 相关阅读:
    英文句子相似性判断
    机器学习(一)特征工程基本流程
    经典卷积神经网络(LeNet、AlexNet、VGG、GoogleNet、ResNet)的实现(MXNet版本)
    Google免费GPU使用教程(亲测可用)
    XGBoost、LightGBM的详细对比介绍
    终身机器学习:一种可持续学习的范式
    机器学习中安全与隐私问题(对抗性攻击)
    频繁模式挖掘中Apriori、FP-Growth和Eclat算法的实现和对比(Python实现)
    Webpack教程,更新中
    @babel/plugin-transform-runtime
  • 原文地址:https://www.cnblogs.com/gqdw/p/2910905.html
Copyright © 2011-2022 走看看