安装mysql5.7以及数据迁移

447 阅读2分钟

最近在对自建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: 表示数据库数据存放的目录

如果出现下述画面则表示安装成功,此时记录红色部分临时默认密码

image.png 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数据库。 image.png

[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

image.png 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;

这里需要提前建好数据库