一、背景
由于腾讯云服务器快过期了,我便买了阿里的服务器,毕竟有学生优惠。由于有一些数据还在腾讯云上,不可能手动搬,只好踏上了数据库迁移的不归路。
二、阿里云服务器
第一次用阿里云服务器搭mysql服务,配置好后本地可以登录,但远程无法连接,查半天原来是没有加安全组。
实例-更多-网络和安全组-安全组配置
后面配置下端口即可远程登录了 - A -
配置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
然后就会看见哗啦哗啦地刷屏,等待刷屏结束后,这就转移结束了!
网友评论