mysql 5.6 导出数据_MySQL基础day03_数据的导入、导出-MySQL 5.6

MySQL基础day03_数据的导入、导出-MySQL 5.6

注:把数据按照一定格式存放到文件里才能进行数据的导入。

1,数据导入的条件

把文件里的内容保存到数据的表里;

把数据按照一定格式存放文件里;

注:默认情况下,只有管理员才有权限导入数据!!!

将/etc/passwd文件里导入到userdb.user_tab表中:

格式:load data  infile ‘文件名‘ into table表名fields  terminated by ‘分隔符‘ lines  terminated by \n‘;

示例:将/etc/passwd导入到userdb.user_tab表中

load data infile ‘/etc/passwd‘ into table userdb.user_tab fields terminated by ‘:‘ lines terminated by ‘\n‘;

2,数据导出

把表中的记录导出的系统文件里;

把userdb.user_tab表中的文件导出:

格式:select *  from导出的表名 into outfile ‘导出的文件名‘ fields terminated by ‘分隔符‘ lines  terminated by ‘\n‘;

select *  from导出的表名 into outfile ‘/目录/文件名‘ fields terminated by ‘分隔符‘ lines terminated by ‘\n‘;

示例:

select *  from userdb.user_tab into outfile ‘user.txt‘ fields terminated by ‘||‘ lines  terminated by ‘\n‘;

注:

使用导出文件名的时候,导出的文件在当前所在的数据库中,如果使用use切换到任何库,则导出到/var/lib/mysql目录下;

如果导出到/目录/文件名,则在建立目录的时候,需要先赋予其他用户w权限,并且关闭SELinux,否则导入时候将没有权限写入;

SELinux是控制的程序对文件的权限;

getenforce查看SELinux的状态;

setenforce 0/1来修改SELinux的状态;(1代表开启,0代表关闭);

SELinux的配置文件为/etc/sysconfig/selinux,如果修改为永久性关闭,需要将SELINUX字段设置为disable:SELINUX=disabled

示例:把系统文件/etc/passwd的内容保存到数据库服务器上的userdb库的user_tab表里create  database userdb;

create table  userdb.user_tab(

name  varchar(30),

passwd  char(1) default ‘x‘,

uid int(3)  not null,

gid int(3)  not null,

infor  varchar(30),

work  varchar(30),

home  varchar(15) not null default ‘/sbin/nologin‘

index(username),

unique(uid)

);

测试插入一个一行值之后删除掉该段:

insert into  userdb.user_tab values(‘root‘,‘x‘,0,0,‘root‘,‘/root‘,‘/bin/bash‘);

delete from  userdb.user_tab where name=‘root‘;

使用load导入:

load data  infile ‘/etc/passwd‘ into table userdb.user_tab fields terminated by ‘:‘  lines terminated by ‘\n‘;

导出到user.txt:

select *  from userdb.user_tab into outfile ‘user.txt‘ fields terminated by ‘||‘ lines  terminated by ‘\n‘;

注:导出的位置为当前数据库的目录,也就是/var/lib/mysql/数据库名目录下;

由于当前没有切换到任何目录,所以,会保存到/var/lib/mysql目录。

导出到/bakdb目录下:

[[email protected]  ~]# chmod o+w /bakdb/       //将bakdb的所有者改为mysql也行

[[email protected]  ~]# ll -d /bakdb/

drwxr-xrwx. 2 root root 4096 3月  17 19:36 /bakdb/

[[email protected]  ~]# getenforce          //查看当前selinux的状态

Enforcing                //Enforcing为强制状态

mysql> select * from userdb.user_tab into outfile  ‘/bakdb/user.txt‘ fields terminated by ‘$‘ lines terminated by ‘\n‘;                //尝试导出,由于selinux的原因,会有permission denied拒绝提示!!!

ERROR 1  (HY000): Can‘t create/write to file ‘/bakdb/user.txt‘ (Errcode: 13 -Permission denied)

mysql>  quit

Bye

[[email protected]  ~]# setenforce 0        //临时关闭selinux

[[email protected]  ~]# getenforce         //查看selinux的状态,permissive表示允许

Permissive

[[email protected]  ~]# vim /etc/sysconfig/selinux

[[email protected]  ~]# grep -vE "^#|^$" /etc/sysconfig/selinux

SELINUX=disabled

SELINUXTYPE=targeted

mysql> select * from userdb.user_tab into outfile  ‘/bakdb/user.txt‘ fields terminated by ‘$‘ lines terminated by ‘\n‘;       //尝试导出,成功!!!

Query OK, 34  rows affected (0.00 sec)

mysql>  quit

Bye

[[email protected]  ~]# ll /bakdb/user.txt

-rw-rw-rw-.  1mysql mysql1725 3月  17 19:36 /bakdb/user.txt

小扩展:

selinux是限制进程对数据的权限

iptables是控制数据包的传输

总结:数据库信息导出时,不指定目录的情况下,默认到数据库目录内,当指定目录的时候,需要注意selinux权限,Redhat Enterprise 6版本的系统,默认都是开启的;

使用getenforce来查看selinux的状态;

setenforce 0/1来设置状态;

做的时候建议先使用setenforce 0关闭selinux;

原文:http://murongqingqqq.blog.51cto.com/2902694/1378318

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值