1.先去阿里元RDS 下载数据库备份文件
官方文档:https://help.aliyun.com/knowledge_detail/41817.html(或多或少总是有坑)
安装mysql
线下环境(centos7+mysql5.7)
注意如果是centos7 的话,安装mysql需要先卸载mariadb,否则会有冲突
2.安装开源备份工具
yum install percona-xtrabackup
因为mysql5.7 所以安装是2.4
3.停止mysql
<1.service mysqld stop
<2.备份原来数据 mv /var/lib/mysql/ /var/lib/mysqlbak
❤️.创建一个新的文件夹 mkdir /var/lib/mysql
<4. tar -izxvf <数据备份文件名>.tar.gz -C /var/lib/mysql
针对不同的下载文件有不同方法,具体见官方文档
<5.恢复文件:innobackupex --defaults-file=/var/lib/mysql/backup-my.cnf --apply-log /var/lib/mysql
若系统返回如下类似结果,则说明备份文件已成功恢复到自建数据库。
<6.为避免版本问题,需修改backup-my.cnf参数,具体操作步骤如下。
执行如下命令,以文本方式编辑backup-my.cnf文件。
自建数据库不支持如下参数,需要注释掉。
#innodb_log_checksum_algorithm
#innodb_fast_checksum
#innodb_log_block_size
#innodb_doublewrite_file
#rds_encrypt_data
#innodb_encrypt_algorithm
#redo_log_version
#master_key_id
具体见官方文档 14条
<7.执行如下命令,修改文件属主,并确定文件所属为MySQL用户。
chown -R mysql:mysql /var/lib/mysql/*
<8.启动
mysql5.7里面没有 mysql_safe
用下面的命令启动,如果停在准备连接数据库这一行,直接ctrl+C 结束就好。
mysqld --defaults-file=/var/lib/mysql/backup-my.cnf --user=root --datadir=/var/lib/mysql --console --skip-grant-tables &
用ps -aux | grep mysql 查看进程
发现已经启动。
<9. mysql -h 127.0.0.1 -u 恢复数据库里的用户 -p
不要需密码
修改密码
use mysql ;
select user,host from user;
找到你要修改账户,注意host上是什么
ALTER USER ‘afs_root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘1234’;
修改密码报错
mysql 配置文件目录:/etc/my.cnf
root 密码为空的时候配置文件中下面这句:
skip-grant-tables
GRANT ALL PRIVILEGES ON . TO IDENTIFIED BY ‘123’ WITH GRANT OPTION;
执行这句时候错误:
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> GRANT ALL PRIVILEGES ON . TO IDENTIFIED BY ‘123’ WITH GRANT OPTION;
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
这个时候我们只需要
flush privileges
一下,在添加用户就OK了,
外部工具访问
如果服务器是 CentOS7,将 MySQL 服务加入防火墙
执行命令
sudo firewall-cmd --zone=public --permanent --add-service=mysql
返回success。然后继续执行
sudo systemctl restart firewalld
重启防火墙之后就能正常访问了。