美文网首页
Mysql 5.6升级到5.7爬坑记

Mysql 5.6升级到5.7爬坑记

作者: 高大强19 | 来源:发表于2020-05-28 13:01 被阅读0次

    MariaDB 10.0 对应 Mysql 5.6

    MariaDB 10.1 对应 Mysql 5.7

    升级的正确姿势:

    使用mysql_upgrade升级,参考下面的文章

    MySQL版本升级之5.6到5.7】 https://www.cnblogs.com/Bccd/p/5987426.html

    前言:

    调试某项目,遇到数据库兼容的问题。

    查询 json_extract does not exist ,得知是mysql版本要 >5.7

    项目是用宝塔运维的,有升级数据库版本的选项。直接使用,

    不能登录ssh,因为米有密码。此路不通。再找,宝塔中有升级数据库的功能。先要备份(主动)数据,删数据,再升级,恢复数据。

    有些服务器是1G内存下的,需要先这样操作。

    打开文件:/www/server/panel/class/panelPlugin.py

    然后把这行if语句注释掉,如下图

    等待他的任务跑完~~~(一杯咖啡的时间)

    带着期望运行,然并卵。宝塔上看,服务没有启动。手动启动~不成功。要来服务器登录账号,开始了折腾之路。

    一:启动

    1.1查看mysql 启动状态:

    systemctl status mysqld.service

    若是显示红色的failed,则是启动失败的。根据它的报错,查询问题原因:

    排查了很多错误,绕来绕去,一头雾水。最后发现:

    1)没有my.cof文件中指定的data文件夹不存在,手动建立。然后用以下命令初始化,mysqld --initialize --user=root --console,

    2)命令报错,看来是宝塔升级了mysql但是没能更新系统的mysqld。找到安装的目录。用全路径运行试试。/www/server/mysql/bin/mysqld / --initialize --user=root --console ;命令运行成功了,查看/www/server/data文件夹,里面有一系列初始化的文件。这里就是我们的数据库存放文件的地方了。

    3)将data文件夹的权限改为mysql的,chown mysql.mysql data/

    4)直接用 /www/server/mysql/bin/mysqld start 启动,报错Too many arguments (first extra is 'restart');缺少指定用户的参数。改为这样启动成功: /etc/rc.d/init.d/mysqld --initialize --user=root --console

    最后一句是生成的临时登录密码:A temporary password is generated for root@localhost: u(xV:Bfjz5gn

    Ps:如果启动报端口占用,netstat -tunlp |grep 3306就查一下端口3306被那个占用了,kill -9 掉。

    二:用户权限

    2.1 MySQL 5.7之后也不再像MySQL 5.6那样默认提供一个没有密码的管理员账号root,而是生成一个临时的密码供你登录,登录后需要修改,必须修改后才能进行后续操作。

    Mysql -uroot -pu(xV:Bfjz5gn //登录

    2.2 使用新密码登录,新建用户,与之前备份的数据库用户/密码一致起来,防止不可知的问题发生。

    修改命令:

    alter user 'root'@'localhost' identified by '[yourpassword]'  

    update user set password=password('7riasXrnzMXLNyBS') where user='root' and host=‘%’; //5.7不可用了

    新版的mysql数据库下的user表中已经没有Password字段了,将加密后的用户密码存储于authentication_string字段。

    update mysql.user set authentication_string=password('7riasXrnzLNyBS') where user='root' and Host = '%';

    grant all privileges on *.* to `root`@"%" ;  //授权

    flush privileges;  //刷新权限

    三:数据恢复

    3.1 使用修改后的的密码登录数据库,建立空的数据库,如crm

    Mysql -uroot -p7riasXrnzLNyBS

    >  CREATE DATABASE crm;

    > quit;  //退出

    导入之前备份的数据:

    Mysql -uusername -ppassword [dbname] < filename.sql

    参数说明:

    Username,表示登录的用户名

    password,表示用户的密码

    dbname,表示要还原的数据库名称

    如果,使用mysqldump命令,备份到filename.sql文件中,包含创建数据库的语句,则不需要指定数据库,因此,还原数据库之前,必须先创建数据库。

    这种方式,只是其中的一种

    还可以登录到MySQL数据库,适应source命令,还原数据库

    Source filename.sql

    source命令,比较简单,只需要指定导入文件的名称,以及路径即可

    3.2 备份

    基本命令:

    mysqldump  -u username -p dbname table1 table2...->BackupName.sql;

    备份crm库

    mysqldump  -uroot -pcrm ->crmDB.sql;

    >Enter password: ***

    多个数据库:

    mysqldump -u username -p --databases dbname2 dbname2 > Backup.sql

    相关文章

      网友评论

          本文标题:Mysql 5.6升级到5.7爬坑记

          本文链接:https://www.haomeiwen.com/subject/ddnoahtx.html