MySQL的导入与导出

166 阅读4分钟
1.导出


1.1
导出脚本和数据
MySQL
的导出是利用
MySQL
安装目录的
bin
目录下的
mysqldump
指令来进行的,该命令需要在
Windows
cmd
命令窗口执行。语法如下:

CMD代码:

[SQL]
纯文本查看
复制代码
1
mysqldump –uusername –ppassword database_name > export_path

如:
CMD代码:

[SQL]
纯文本查看
复制代码
1
mysqldump –uroot –p123 test > D:\\test.sql

如果需要指定导出文件的编码则可以通过参数--default-character-set来指定,如:

SQL代码:

[SQL]
纯文本查看
复制代码
1
mysqldump –uroot –p123 test > D:\\test.sql --default-character-set=utf8


1.2
只导出脚本

上述脚本会连目标库里面的数据一起导出来,但有时候我们可能并不需要导出其中的数据,这个时候我们可以加上参数
--no-data
。(注意
no
前面是有两个横杠的)。如:

CMD代码:

[SQL]
纯文本查看
复制代码
1
mysqldump --no-data -uroot -p123 test > D:\\test.sql


1.3
远程导出

有时候我们可能想导出的数据库不是本地的,这个时候我们可以加上参数
-h
来指定要导出的数据库所在的主机,以及在使用非默认端口(
3306
)时通过参数
-P
(大写)指定对应的端口。如:

CMD代码:

[SQL]
纯文本查看
复制代码
1
mysqldump -uroot -p123 -h10.10.10.3 -P3306 test > D:\\test.sql

需要注意的是
MySQL
默认只允许访问本机的数据库,如果需要访问远程的
MySQL
,那么远程的
MySQL
应当开放指定
IP
访问的权限。如:

MYSQL代码:

[SQL]
纯文本查看
复制代码
1
grant all privileges on *.* to ‘root’@’10.10.10.3’ identified by ‘123' with grant option;

也可以把
IP
换成百分号“
%
”,表示所有的
IP
都允许访问,如:

MYSQL代码:

[SQL]
纯文本查看
复制代码
1
grant all privileges on *.* to ‘root’@’%’ identified by ‘123’ with grant option;

也可以使用如下形式,表示只允许
IP
以“
10.10.10
”开始的进行访问,如:

MYSQL代码:

[SQL]
纯文本查看
复制代码
1
grant all privileges on *.* [color=#000][backcolor=rgb(250, 250, 250)][font=Monaco, "][size=12px] to ‘root’@’[/size][/font][/backcolor][/color][color=#c000][backcolor=rgb(250, 250, 250)][font=Monaco, "][size=12px]10.10[/size][/font][/backcolor][/color][color=#000][backcolor=rgb(250, 250, 250)][font=Monaco, "][size=12px].[/size][/font][/backcolor][/color][color=#c000][backcolor=rgb(250, 250, 250)][font=Monaco, "][size=12px]10[/size][/font][/backcolor][/color][color=#000][backcolor=rgb(250, 250, 250)][font=Monaco, "][size=12px].%’ [/size][/font][/backcolor][/color] identified by ‘123’ with grant option;


grant
指令是需要在
MySQL
命令窗口执行的,其标准语法如下所示:

MYSQL代码:

[SQL]
纯文本查看
复制代码
1
grant [privilege1,privilege2] on database_name.table_name to ‘username’@’client_host’ identified by password’ [with grant option];

其表示将某个数据库的某个表的某权限赋予给来自某客户端的某用户,“
all privileges
”表示将授予所有的权限,“
with grant option
”表示其是否可以将自身的权限授予他人。如果我们只想授予某用户对某表的
select
权限,则可以使用如下语句:

MYSQL代码:

[SQL]
纯文本查看
复制代码
1
grant select on database_name.* to ‘username’@’client_host’ identified by 'password'

1.4 导出查询结果
SQL代码:
[SQL]
纯文本查看
复制代码
1
select * from user into outfile 'D:\out.sql'

如果需要导入这个导出结果,则使用:

SQL代码:
[SQL]
纯文本查看
复制代码
1
load data local infile 'D:\out.sql' into table user;


2、导入

导入是在登录以后,在
MySQL
的命令窗口使用
source
指令来进行的,语法如下

MYSQL代码:

[SQL]
纯文本查看
复制代码
1
source import_path

如:
MYSQL代码:

[SQL]
纯文本查看
复制代码
1
source D:\\test.sql

如果需要指定导入的编码则可以通过参数--default-character-set来指定。

此外需要注意的是导入必须指定将要导入的数据库,也就是说在执行
source
导入之前,必须通过
use database_name
切换到要导入的数据库。

2.1
导入远程数据库

本地导入的话我们可以直接打开
MySQL
的命令窗口登录数据库进行导入,当然也可以在
Windows
cmd
命令窗口通过
mysql
指令来登录到
MySQL
mysql
指令也是在
MySQL
安装目录下的
bin
目录下,其语法如下:

CMD代码:

[SQL]
纯文本查看
复制代码
1
mysql -u username -p password

如:
CMD代码:
[SQL]
纯文本查看
复制代码
1
mysql -uroot -p123

但如果需要导入到远程数据库的话,那么首先我们应当登录到远程数据库,登录到远程数据库的语法是使用
mysql
指令,但是通过
-h
参数来指定要登录的远程主机,通过
-P
(大写)来指定对应的端口。如:

CMD代码:

[SQL]
纯文本查看
复制代码
1
mysql -uroot -p123 -h10.10.10.3 -P3306


需要注意的是远程导入时,也需要有通过本地客户端的
mysql
指令登录远程数据库的权限,也就是说也需要像导出那样使用
grant
指令授予对应的权限。