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

  • 相关阅读:
    原来发布到主页是发布到博客园的主页啊,还真不知道
    sysobjects
    blend3破解文件,直接覆盖安装目录源文件即可。
    Microsoft Sql中char和varchar的区别与联系
    SQL脚本创建数据表,并给出主键,外键,唯一键,约束
    asp.net调试方法
    VS2010安装项目的系统必备中添加.NET 2.0
    c#,自定义安装,部署,创建自定义操作,自定义操作,安装验证,数据库,安装授权码,接收输入,判断
    Ext2.2系列(50篇)
    C# 获取24小时制的当前系统时间
  • 原文地址:https://www.cnblogs.com/gqdw/p/2910905.html
Copyright © 2020-2023  润新知