记一次mysql服务器迁移

2019-03-03  本文已影响0人  GrasFish
一、背景

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

二、阿里云服务器

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


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

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


配置3306端口
三、权限
1.问题

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

mysql -u root -p

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

2.修改用户表
  1. 修改mysql配置表
vim /etc/my.cnf

在[mysqld]下增加一句

skip-grant-tables

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

systemctl restart mysqld
  1. 进入mysql(没错,不用输入密码账号)
mysql
  1. 查看用户表
mysql> use mysql;
mysql> select host,user,password from user;

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

host user password
localhost

这条数据userpassword都为空。

  1. 增加内容
mysql> update user set user='root',password=password('密码') where host='localhost';

更新下权限

mysql> flush privileges;
  1. 重新配置my.cnf
    打开/etc/my.cnf注释或删除刚刚添加的skip-grant-tables,然后重启服务systemctl restart mysqld;

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

  3. 改好后重启服务后,直接进入mysql
    先刷新下权限。

mysql >flush priveleges.

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

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

这个语法剖析一下就是

grant privileges database.table to user@host
privileges可以是all,select,update,insert等操作

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

四、转移
  1. 前提
    这里把转移的服务器称为A,被转移的服务器称为B。

  2. 生成sql
    在A服务器中

mysql -uroot -p blog > blog.sql

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

  1. 传输sql文件
    可以通过任何方式把这个文件从A转移到B中。
    笔者使用的是scp
scp blog.sql root@xxx.xxx.xxx.xxx:/

语法是

scp localfile user@host:des
scp 本地文件 用户@主机:目的文件夹

  1. 转移
    打开B服务器的mysql,创建同样的数据库
mysql> create database blog

进入数据库

mysql> use blog;

导入资源,注意文件目录

mysql> source blog.sql

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

上一篇 下一篇

猜你喜欢

热点阅读