有一个MySQL云数据库,版本比较老,是5.5.
需要在线下搭建一个测试环境,所以需要将数据还原到一个自建MySQL数据库内。
5.5已经很难找到了,所以安装了一个5.7.
云数据库设置的备份,使用的是全复制文件方法。
还原数据需要使用xtrabackup进行。因为版本差2个小版本,差别较大,直接恢复有问题。
这里选择使用mysqldump进行备份,然后使用mysql命令导入数据的方式。
mysqldump很顺利。
安装MySQL5.7让一个同事帮忙做的。遗憾的是,他把密码忘记了。
于是先要重置root密码。
我采用的方法简单粗暴,跳过权限设置启动服务,登录进去更新root账户数据,退出重启服务。
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
在[mysqld]下面添加一行
skip-grant-tables
保存退出。
重启服务systemctl restart mysql.service
另外还有一个方法,就是使用默认账号登录去修改root账户。
默认账户信息使用如下命令查看:
cat /etc/mysql/debian.cnf
其中会有一个名为debian-sys-maint的账户
mysql -uroot
进入mysql环境。执行如下:
use mysql ;
UPDATE mysql.user SET authentication_string=PASSWORD('123456789'), PLUGIN='mysql_native_password' WHERE USER='root';
exit ;
重启服务systemctl restart mysql.service
如果想要在其他主机使用root连接这个mysql实例,那么还需要更新host字段,例如:
UPDATE mysql.user SET authentication_string=PASSWORD('123456789'), PLUGIN='mysql_native_password' ,host='%' WHERE USER='root';
这里提醒,字段PLUGIN初始值是auth_socket。如果不更新为mysql_native_password,则不能使用账户和密码认证登录。
最后使用root恢复数据,例如:
mysql -uroot -p 数据库名 < 备份文件名