最近在对自建mysql数据库中数据进行迁移,尝试了几种方式,尝试了直接拷贝data目录,navicat导入导出最终都不合适,最后采用了mysqldump命令进行处理
一、进行mysql的tar包安装
1、将下载好的安装包直接解压到/disk1目录,也有的人会安装在/usr/local下,这个根据自己需要处理
tar -zxvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.22-linux-glibc2.12-x86_64 mysql
2、添加mysql用户组跟mysql用户
groupadd mysql
useradd -r -g mysql mysql
3、修改mysql解压文件的用户权限
chown -R mysql:mysql mysql
4、安装mysql,命令如下
./bin/mysqld --user=mysql --basedir=/disk1/mysql --datadir=/disk1/mysql/data --initialize
basedir: 表示程序的安装目录
datadir: 表示数据库数据存放的目录
如果出现下述画面则表示安装成功,此时记录红色部分临时默认密码
5、开启mysql服务,命令如下
./support-files/mysql.server start
如果报错跟/usr/local/mysql相关的内容,则需要修改mysql.server的内容,将basedir跟bindir改为实际安装mysql的目录
if test -z "$basedir"
then
basedir=/usr/local/mysql
bindir=/usr/local/mysql/bin
if test -z "$datadir"
then
datadir=/usr/local/mysql/data
fi
sbindir=/usr/local/mysql/bin
libexecdir=/usr/local/mysql/bin
else
bindir="$basedir/bin"
if test -z "$datadir"
then
datadir="$basedir/data"
fi
sbindir="$basedir/sbin"
libexecdir="$basedir/libexec"
fi
如果出现如下错误,则说明mysql配置文件/etc/my.cnf中的路径不对,修改内容如下,datadir和socket都修改成mysql的安装目录下,增加[client]板块,用于命令行连接mysql数据库。
[mysqld]
port=3306
datadir=/disk1/mysql/data
socket=/disk1/mysql/mysql.sock
user=mysql
max_connections=151
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# 设置忽略大小写
lower_case_table_names = 1
# 指定编码
character-set-server=utf8
collation-server=utf8_general_ci
# 开启ip绑定
bind-address = 0.0.0.0
[mysqld_safe]
log-error=/disk1/mysql/mariadb.log
pid-file=/disk1/mysql/mariadb.pid
#指定客户端连接mysql时的socket通信文件路径
[client]
socket=/disk1/mysql/mysql.sock
default-character-set=utf8
6、重新开启mysql服务,如下图则表示开启成功
./support-files/mysql.server start
7、将mysql进程放入系统进程中,目录如下
cp support-files/mysql.server /etc/init.d/mysqld
8、查看MySQL的运行状态
service mysqld status
9、配置mysql的环境变量
vi /etc/profile
export PATH=$PATH:/disk1/mysql/bin
退出后再次运行source /etc/profile
10、使用临时密码登录mysql
mysql -u root -p pwsswd
11、进入mysql后为root用户设置新密码
alter user 'root'@'localhost' identified by 'root';
这里举例说明摄入root,实际中注意密码复杂度
12、设置允许远程连接数据库,命令如下
选择数据库
use mysql;
update user set user.Host='%' where user.User='root';
查看修改后的值:
select user,host from user;
13、刷新权限,命令如下
flush privileges;
二、数据导入导出
1、通过mysqldump导出数据库数据
./mysqldump -u root -p hs_worldcheck > /disk1/hs.sql
其中hs_worldcheck是指定的数据库,也可以全部导出,自己自行百度
其他方法,百度得到:
## 导出整个数据库结构和数据
# mysqldump -h localhost -P 3306 -uroot -p123456 database > test.sql
## 导出单个数据表结构和数据
# mysqldump -h localhost -P 3306 -uroot -p123456 database table > test.sql
## 导出整个数据库结构(不包含数据)
# mysqldump -h localhost -P 3306 -uroot -p123456 -d database > test.sql
## 导出单个数据表结构(不包含数据)
# mysqldump -h localhost -P 3306 -uroot -p123456 -d database table > test.sql
## 说明:
## 如果是本机操作,其中 -h localhost -P 3306 可以不需要
## -P 参数,是大P,且有空格;不同于后面密码的小p,没有空格
15、数据导入,这里采用进入到mysql命令行,用source命令操作
## 使用source导入sql文件
mysql > use hs_worldcheck;
mysql > source /disk1/hs.sql;
这里需要提前建好数据库