mysql 迁移服务器实现_记一次mysql服务器迁移

一、背景

由于腾讯云服务器快过期了,我便买了阿里的服务器,毕竟有学生优惠。由于有一些数据还在腾讯云上,不可能手动搬,只好踏上了数据库迁移的不归路。

二、阿里云服务器

第一次用阿里云服务器搭mysql服务,配置好后本地可以登录,但远程无法连接,查半天原来是没有加安全组。

dc4a33309bab

实例-更多-网络和安全组-安全组配置

后面配置下端口即可远程登录了 - A -

dc4a33309bab

配置3306端口

三、权限

1.问题

本来做好准备迁移了,但打开腾讯云输入

mysql -u root -p

并不能登录,反复确认并不是密码错误,莫名的不能本地登录,但远程可以。所以把问题定位在了host的问题上。

2.修改用户表

修改mysql配置表

vim /etc/my.cnf

在[mysqld]下增加一句

skip-grant-tables

然后保存文件,重启mysqld服务

systemctl restart mysqld

进入mysql(没错,不用输入密码账号)

mysql

查看用户表

mysql> use mysql;

mysql> select host,user,password from user;

这时候问题来了,我发现了host为localhost的这条有点奇怪。如下

host

user

password

localhost

这条数据user和password都为空。

增加内容

mysql> update user set user='root',password=password('密码') where host='localhost';

更新下权限

mysql> flush privileges;

重新配置my.cnf

打开/etc/my.cnf注释或删除刚刚添加的skip-grant-tables,然后重启服务systemctl restart mysqld;

再次登录mysql

输入密码账号后就登录进去了,但这并没有结束!发现use mysql并没有权限!只好重新改my.cnf来一次。

改好后重启服务后,直接进入mysql。

先刷新下权限。

mysql >flush priveleges.

然后设置权限,干脆全部权限都给了好了。

mysql > grant all on *.* to root@'%';

这个语法剖析一下就是

grant privileges database.table to user@host

privileges可以是all,select,update,insert等操作

大功告成,可以愉快地使用数据库了 !

四、转移

前提

这里把转移的服务器称为A,被转移的服务器称为B。

生成sql

在A服务器中

mysql -uroot -p blog > blog.sql

就是将blog这个数据库的内容输出到blog.sql文件里,文件命名随意。

传输sql文件

可以通过任何方式把这个文件从A转移到B中。

笔者使用的是scp。

scp blog.sql root@xxx.xxx.xxx.xxx:/

语法是

scp localfile user@host:des

scp 本地文件 用户@主机:目的文件夹

转移

打开B服务器的mysql,创建同样的数据库

mysql> create database blog

进入数据库

mysql> use blog;

导入资源,注意文件目录

mysql> source blog.sql

然后就会看见哗啦哗啦地刷屏,等待刷屏结束后,这就转移结束了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值