一,数据导入 数据导出
导入导出数据的默认存储文件路径是/var/lib/mysql-files
show variables like "secure_file_priv";
自定义数据导出,导入文件存储的目录
oot@host50 ~]# mkdir /mydata[root@host50 ~]# chown mysql /mydata/
[root@host50 ~]# vim /etc/my.cnf [mysqld]下面写入创建目录 secure_file_priv=自定义目录
[root@host50 ~]# systemctl restart mysqld
数据导入:把系统文件的内容存储到数据库服务器的表里。
有格式规律
导入数据的步骤:
1。把系统文件拷贝指定的目录下
mysql> system cp /etc/passwd /mydata/
mysql> system ls /mydata
2.创建存储文件内容的表
mysql> create table db3.user(name char(50),
-> password char(1),
-> uid int(2),
-> gid int(2),
-> comment varchar(150),
-> homedir char(150),
-> shell char(50),
-> index(name));
mysql> desc user;
导入数据:1,字段分隔符要与文件内的一致2,指定导入文件的绝对路径3,导入数据的表字段类型要与文件字段匹配4,禁用Selinex保护机制
3.导入数据(格式:load data infile "目录名/文件名" into table 表名 fields terminated by "分隔符 " lines terminatedby"\n";
mysql> load data infile "/mydata/passwd" into table db3.user fields terminated by ":" lines terminated by "\n";
mysql> select * from user; (导入数据)
mysql> alter table user add id int(2) primary key auto_increment first; ( 加行号自动增长)
mysql> select * from user;
mysql> select * from user where id=15; (寻找某一个id)
数据导出:1.导出的内容由SQL的语句决定2.导出的是表中的记录,不包括字段名 3.禁用Slinux
数据导出:把数据库服务器的表里的记录存储到系统文件里。
格式:sql查询命令 into outfile "目录名/文件名" fields terminated by "分隔符" lines terminated by "\n"
mysql> select * from t1 into outfile "/mydata/t1.txt";
mysql> select * from t1 into outfile "/mydata/t2.txst" fields terminated by "#";
mysql> select * from t1 into outfile "/mydata/t3.txt" fields terminated by "#" lines terminated by "!!!";
二:管理表记录
管理表记录
添加表记录 格式: insert into 表名 values(字段值列表) (给所有的字段赋值)
格式2:insert into 表名 values(字段值列表),.....添加n条
mysql> insert into user
-> values
-> (42,"bob","x",2000,2000,"student user","/home/bob","/bin/bash");
mysql> insert into user values(43,"bob","x",2000,2000,"student user","/home/bob","/bin/bash");
格式3: insert into 表名(字段名列表)values(字段值列表); (给指定的字段赋值)
格式4:insert into (字段名列表)values(字段值列表),...添加n条
mysql> insert into user (name,shell,uid)
-> values
->("lucy","/sbin/nologin",1998);
mysql> insert into user (name,shell,uid) values ("tom","/sbin/nologin",1928);
mysql> insert into user (name,shell,uid) values ("alice","/sbin/nologin",1948);
语法注意格式:字段值要与字段型相匹配
2.对于字段类型的字段,要用双引或单引括起来
3.依次给所有的字段赋值时,字段名可以省略
4.只给一部分赋值时,必须明确写出相应的名称
查询记录 select
格式:select 字段1, ..字段n from 表名;
格式2:select 字段1,..,字段n from 表名; where 条件表达式;
select * from user;
mysql> select name,uid,shell from user where shell="/bin/bash";
mysql> select name,uid,shell from user;
更新记录字段的值 update
格式:update 表 set 字段名=值,字段名n=值n,...where 条件; (只更新符合条件的部分记录)注意:不使用where会更新所有记录。
格式:update 表 set 字段名=值,字段名n=值n (更新表内的所有内容)
update user set password="a",gid=1000;
update user set password="x",where id=1; (只更新符合条件的部分记录)
select password ,gid from user;
删除记录 delete
格式:delete from 表 where 条件; (仅删除符合条件的记录)
格式:delete from 表 (删除所有记录)
delete from t1;
select * from t1;
select * from user where name="bob";
delete from user where name="bob";
select * from user where name="bob";
三:匹配条件的表达式:
匹配条件的表示方式(select update delete
格式:where 字段名 符号 数值 数值比较:类型:>(大于)<(小于)=(等于)!=(不等于mysql> select * from user where id <=10; >=(大于或不等于)<=(小于或等于)
mysql> select name,uid from user where uid=9;
mysql> select name,uid,gid from user where uid=gid;
字符比较:where 字段名 符号 "值" 字符比较 非空 匹配空
mysql> select name,shell from user where shell != "/bin/bash"; =(相等) !=(不相等) is null(匹配空)is null not(非空)
匹配空 :is null is not null
insert into user(id,name)values(51,""),(52,"null"),(53,"null");
select id,name from user where id>=51;
mysql> select id,name from user where name is null;
mysql> select id,name from user where name="null"
mysql> select id,name from user where name="";
mysql> select name,shell from user where shell is not null;
mysql> select id,name,shell from user where shell is null;
mysql> update user set password=null where name="bin";
mysql> select * from user where name="bin";
逻辑比较:and(与) or(或) ! not(非) ()(提高优先级)
mysql> select * from user where name="root" and uid=1 and shell="/bin/bash";
mysql> select name,uid from user where name="root" or uid=1;
mysql> select name,uid from user
-> where name="root" or name="bin" and uid=1;
mysql> select name,uid from user where (name="root" or name="bin") and uid=1; (提高优先级)
范围内匹配:
mysql> select name from user where name in("root","sync","lucy","bob");
mysql> select name,uid from user where uid in (1,7,27,1000);
mysql> select name,shell from user where shell not in ("/bin/bash","/sbin/nologin");
mysql> select * from user where uid between 10 and 20;
mysql> select * from user where uid>=10 and uid<=20;
distinct (只适合select查询使用)
mysql> select shell from user;
mysql> select distinct shell from user;
mysql> select shell from user where uid <=500;
mysql> select distinct shell from user where uid <=500;
四:高级匹配条件
模糊查询
-匹配任意一个字符
%匹配零个或多个字符
格式:where 字段名 like '表达式';
select name from user where name like '_';
mysql> select name from t2 where name like '%a%';
mysql> select name from t2 where name like '%-%';
mysql> select name from t2 where name like '%';
五:正则表达式:
where 字段名 regexp '正则表达式' 正则元字符:^ $ . [] * |
select name from user where name regexp '^a.*t$';
insert into user(name)values("ya9ya"),("7yaya"),("yaya");
select name from user where name regexp '[0-9];
select name from t1 where name regexp '^[0-9]';
select name from t1 where name regexp '[0-9]$';
select name,uid from t1 where uid regexp '..';
select name,uid from t1 where uid regexp '^..$';
六:四则计算:+ - * / %(字段类型 必须是数值类型) 四则运算数则类型:+ - * (乘法) / (除法) % (取余数)
update user set uid=uid+1 where id<=10;
select name,uid,gid ,uid+gid jiehuo from user where name="root";
mysql> select name,uid,gid,(uid + gid) / 2 pjjz from t1 where name="root";
mysql> alter table t1 add age tinyint(2) unsigned default 18 after name;
mysql> select name,age from t1 where name ="root";
ysql> select name,age,2018-age s_year from t1 where name="root";
七:聚集函数(MYSQL服务自带的对数据做统计的命令) MYSQL 内置数据统计函数 :
avg(字段名)统计字段平均值 sum(字段名)统计字段之和) min(字段名)统计字段最小值) max(字段名)统计字段最大值 count(字段名)统计字段值个数
mysql> select sum(uid) from t1;
mysql> select sum(uid) from t1 where id<=10;
mysql> select avg(uid) from t1 where id<=10;
mysql> select min(uid) from t1 where id<=10;
mysql> select max(uid) from t1 where id<=10;
mysql> select name from t1 where shell="/bin/bash";
mysql> select sum(uid),avg(uid),max(uid),min(gid) from t1;
mysql> select name from t1 where shell="/bin/bash";
mysql> select count(name) from t1 where shell="/bin/bash";
mysql> select count(id),count(name) from t1;
八:操作查询结果 select .... from user where .... ;
格式:
select 查询 from group by 字段名(通常是字符型字段);查询分组
mysql> select shell from t1;
mysql> select shell from t1 group by shell;
mysql> select distinct shell from t1;
select 查询 from order by 字段名(通常是数值类型字段) 排序方式; 排序【asc | desc】
mysql> select name,uid from t1 where uid>=10 and uid<=500;
mysql> select name,uid from t1 where uid>=10 and uid<=500 order by uid desc;
limit 限制查询结果显示的行数
格式:
sql查询 limit n;显示当前结果前n条记录
sql查询 limit n,m;显示指定范围内的查询记录
sql查询 limit where 条件查询 limit 3; 显示查询结果前3条记录
sal查询 where 条件查询 limit 3,3;从第4条开始,共显示3条
select 查询 from limit 数字1, 显示查询结果的前几行
select 查询 from limit 数字1, 数字2; 显示指定范围内的行; ( 0表示第1行)
mysql> select name,shell from t1;
mysql> select name,shell from t1 limit 5;
mysql> select name,shell from t1 where uid <=500;
mysql> select name,shell from t1 where uid <=500 limit 2;
mysql> select name,shell from t1 where uid <=500 limit 1,5;
mysql> select * from t1;
mysql> select * from t1 limit 4,3;
having 条件 在查询结果里查找数据
格式:
select 查询 from having 条件表达式;
sql查询 where 条件 having 条件表达式;
sql查询 group by 字段名 having 条件表达式;
select name from t1 where in<=10 having 条件;
ysql> select name,uid from t1 where uid >=1000 having name is null;
mysql> select name,uid from t1 where uid >=1000 having uid=65534;
mysql> select name,uid from t1 where uid >=1000 having name="bob";
数据库管理
NSD DBA 基础
DAY03内容
09:00 ~ 09:30
上午
下午
09:30 ~ 10:20
10:30 ~ 11:20
作业讲解和回顾
MySQL 存储引擎
11:30 ~ 12:00 数据导入导出
14:00 ~ 14:50 管理表记录
15:00 ~ 15:50
16:10 ~ 17:00
17:10 ~ 18:00
匹配条件
总结和答疑MySQL 存储引擎
MySQL 工作原理
MySQL 体系结构
MySQL 存储引擎
MySQL 存储引擎
存储引擎的配置
修改表的存储引擎
设置默认存储引擎
存储引擎特点
MyISAM 存储引擎
InnoDB 存储引擎
MySQL 锁机制
事务特性 (ACID)MySQL 工作原理MySQL 体系结构
知
识
讲
解
各种存储
引擎组件
SQL 接口 / 解析器 / 优化器 / 缓存MySQL 存储引擎
• 作为可插拔式的组件提供
知
识
讲
解
– MySQL 服务软件自带的功能程序,处理表的处理器
– 不同的存储引擎有不同的功能和数据存储方式
• 默认的存储引擎
– MySQL 5.0/5.1 ---> MyISAM
– MySQL 5.5/5.6 ---> InnoDBMySQL 存储引擎 ( 续 1)
• 列出可用的存储引擎类型
– SHOW ENGINES; 或 SHOW ENGINES\G
知
识
讲
解存储引擎的配置修改表的存储引擎
• 建表时手动指定
知
识
讲
解
– 未指定时,使用默认存储引擎
– SHOW CREATE TABLE xxx\G ;可确认设置默认存储引擎
• 修改 /etc/my.cnf 配置文件
– default-storage-engine=xxxx
知
识
讲
解
[root@dbsvr1 ~]# vim /etc/my.cnf
[mysqld]
.. ..
default-storage-engine=InnoDB
[root@dbsvr1 ~]# service mysql restart
Shutng down MySQL....
[ 确定 ]
Startng MySQL........
[ 确定 ]存储引擎特点Myisam 存储引擎
• 主要特点
知
识
讲
解
– 支持表级锁
– 不支持事务、事务回滚、外键
• 相关的表文件
– 表名 .frm 、
– 表名 .MYI
– 表名 .MYDInnoDB 存储引擎
• 主要特点
知
识
讲
解
– 支持行级锁定
– 支持事务、事务回滚、支持外键
• 相关的表文件
– xxx.frm 、 xxx.ibd
– ibdata1
– ib_logfile0
– ib_logfile1MySQL 锁机制
• 锁粒度
知
识
讲
解
– 表级锁:一次直接对整张表进行加锁。
– 行级锁:只锁定某一行。
– 页级锁:对整个页面( MySQL 管理数据的基本存储单
位)进行加锁。
• 锁类型
– 读锁(共享锁):支持并发读。
– 写锁(互斥锁、排它锁):是独占锁,上锁期间其他
线程不能读表或写表。MySQL 锁机制(续 1 )
• 查看当前的锁状态
– 检查 Table_lock 开头的变量, % 作通配符
知
识
讲
解事务特性 (ACID)
• Atomic :原子性
知
识
讲
解
– 事务的整个操作是一个整体,不可分割,要么全部成
功,要么全部失败。
• Consistency : 一致性
– 事务操作的前后,表中的记录没有变化。
• Isolation :隔离性
– 事务操作是相互隔离不受影响的。
• Durability :持久性
– 数据一旦提交,不可改变,永久改变表数据事务特性 (ACID) (续 1 )
• 示例
知
识
讲
解
mysql> show variables like "autocommit"; // 查看提交状态
mysql> set autocommit=off; // 关闭自动提交
mysql> rollback ; // 数据回滚
mysql> commit; // 提交数据案例 1 : MySQL 存储引擎的配置
1. 可用的存储引擎类型
2. 查看默认存储类型
课
堂
练
习
3. 更改表的存储引擎数据导入导出
数据导入导出
数据导入导出
设置搜索路径
数据导入
数据导出数据导入导出设置搜索路径
• 查看默认使用目录及目录是否存在
知
识
讲
解
mysql> show variables like "secure_file_priv";
+------------------+-----------------------+
| Variable_name | Value
|
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
[root@localhost ~]# ls -ld /var/lib/mysql-files/
drwxr-x---. 2 mysql mysql 31 4 月 19 14:15 /var/lib/mysql-files/设置搜索路径(续 1 )
• 修改目录及查看修改结果
知
识
讲
解
[root@localhost ~]# mkdir /myload ; chown mysql /myload
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
secure_file_priv="/myload"
[root@localhost ~]# systemctl restart mysqld
mysql> show variables like "secure_file_priv";
+------------------+----------+
| Variable_name | Value
|
+------------------+----------+
| secure_file_priv | /myload/ |
+------------------+----------+数据导入
• 基本用法
– LOAD DATA INFILE “ 目录名 / 文件名”
INTO TABLE 表名
知
识
讲
解
FIELDS TERMINATED BY “ 分隔符”
LINES TERMINATED BY “\n”;
• 注意事项
– 字段分隔符要与文件内的一致
– 指定导入文件的绝对路径
– 导入数据的表字段类型要与文件字段匹配
– 禁用 SElinux数据导入(续 1 )
• 案例需求
– 将本地用户的记录导入 userdb 库的 user 表里
– 为每条用户记录添加记录编号
知
识
讲
解
mysql> create database userdb;
mysql> create table userdb.user(
-> name char(50),
-> password char(1),
-> uid int(2),
-> gid int(2),
-> comment varchar(100),
-> homedir char(60),
-> shell char(50),
-> index(name)
-> );
表结构参考 /etc/passwd 文件数据导入(续 2 )
mysql> load data infile "/myload/user.txt" into table userdb.user fields
terminated by ":" lines terminated by "\n";
知
识
讲
解
mysql> alter table userdb.user add id int(2) zerofill primary key
auto_increment first;
mysql> select id ,name,uid from userdb.user limit 3;
+----+-----------+------+
| id | name
| uid |
+----+-----------+------+
| 01 | root
| 0 |
| 02 | bin
| 1 |
| 03 | daemon | 2 |
+----+-----------+------+
3 rows in set (0.00 sec)数据导出
• 基本用法
知
识
讲
解
– SELECT 查询 .. ..
INTO OUTFILE “ 目录名 / 文件名”
FIELDS TERMINATED BY “ 分隔符”
LINES TERMINATED BY “\n”;
• 注意事项
– 导出的内容由 SQL 查询语句决定
– 禁用 SElinux数据导出(续 1 )
• 案例需求
知
识
讲
解
– 导出 userdb 库 user 表中 uid 小于 100 的用户记录
– 导出 mysql 库 user 表的前 10 条记录,只需包括 user
、 host 两个字段的信息
mysql> select * from userdb.user where uid<100 into outfile "/
myload/user2.txt";
Query OK, 18 rows affected (0.00 sec)
mysql> select user,host from mysql.user into outfile "/myload/
user3.txt";
Query OK, 3 rows affected (0.00 sec)案例 2 :数据导入 / 导出
使用 SQL 语句完成下列导出、导入操作:
课
堂
练
习
1 )将 /etc/passwd 文件导入 userdb 库 user 表并给每
条记录加编号
2 )将 userdb 库 user 表中 uid 小于 100 的前 10 条记
录导出,存为 /myload/user2.txt 文件管理表记录
增加表记录
管理表记录
语法格式
查询表记录 语法格式
更新表记录 语法格式
删除表记录 语法格式增加表记录语法格式
• 格式 1 :给所有字段赋值
知
识
讲
解
– INSERT INTO 表名
VALUES
( 字段 1 值, .. .. ,字段 N 值 ) ,
( 字段 1 值, .. .. ,字段 N 值 ) ,
( 字段 1 值, .. .. ,字段 N 值 ) ,
.. .. ;
第 1 条表记录
第 2 条表记录
第 3 条表记录语法格式(续 1 )
• 格式 2 ,给指定字段赋值
知
识
讲
解
– INSERT INTO 表名 ( 字段 1,.. .., 字段 N)
VALUES
( 字段 1 值,字段 2 值,字段 N 值 ) ,
( 字段 1 值,字段 2 值,字段 N 值 ) ,
( 字段 1 值,字段 2 值,字段 N 值 ) ,
.. .. ;
第 1 条表记录
第 2 条表记录
第 3 条表记录语法格式(续 2 )
• 注意事项
知
识
讲
解
– 字段值要与字段类型相匹配
– 对于字符类型的字段,要用双或单引号括起来
– 依次给所有字段赋值时,字段名可以省略
– 只给一部分字段赋值时,必须明确写出对应的字段名称查询表记录语法格式
• 格式 1
– SELECT 字段 1, .. .., 字段 N FROM 表名 ;
知
识
讲
解
• 格式 2
– SELECT 字段 1, .. .., 字段 N FROM 表名
WHERE 条件表达式 ;
• 注意事项
– 使用 * 可匹配所有字段
– 指定表名时,可采用 库名 . 表名 的形式更新表记录语法格式
• 格式 1 ,更新表内的所有记录
知
识
讲
解
– UPDATE 表名
SET
字段 1= 字段 1 值 ,
字段 2= 字段 2 值 ,
字段 N= 字段 N 值 ;语法格式(续 1 )
• 格式 2 ,只更新符合条件的部分记录
知
识
讲
解
– UPDATE 表名
SET
字段 1= 字段 1 值 ,
字段 2= 字段 2 值 ,
字段 N= 字段 N 值 ;
WHERE 条件表达式 ;语法格式(续 2 )
• 注意事项
知
识
讲
解
– 字段值要与字段类型相匹配
– 对于字符类型的字段,要用双或单引号括起来
– 若不使用 WHERE 限定条件,会更新所有记录
– 限定条件时,只更新匹配条件的记录删除表记录语法格式
• 格式 1 ,仅删除符合条件的记录
– DELETE FROM 表名 WHERE 条件表达式 ;
知
识
讲
解
• 格式 2, 删除所有的表记录
– DELETE FROM 表名 ;案例 3 :操作表记录
• 练习表记录的操作
课
堂
练
习
– 表记录的插入
– 表记录的更新
– 表记录的查询
– 表记录的删除匹配条件
基本查询条件
数值比较
字符比较 / 匹配空 / 非空
逻辑匹配
范围匹配
高级查询条件
匹配条件
模糊查询
正则表达式
聚集函数
四则运算
去重查询
操作查询结果
查询结果排序
查询结果分组
查询结果过滤
限制显示行数基本查询条件数值比较
• 字段类型必须数据数值类型
类 型
知
识
讲
解
mysql> alter table t1 add age tinyint(2) unsigned default 18 after name;
用 途
= 等于
> 、 >= 大于、大于或等于
< 、 <= 小于、小于或等于
!= 不等于字符比较 / 匹配空 / 非空
• 字段类型必须
类 型
知
识
讲
解
用 途
= 相等
!= 不相等
IS NULL 匹配空
IS NOT NULL 非空逻辑比较
• 多个判断条件时使用
类 型
知
识
讲
解
用 途
OR 逻辑或
AND 逻辑与
! 逻辑非
( ) 提高优先级范围内匹配 / 去重显示
• 匹配范围内的任意一个值即可
知
识
讲
解
类 型
用 途
In ( 值列表 ) 在...里...
Not in ( 值列表 ) 不在...里...
Between 数字 1 and 数字
2 在...之间...
DISTINCT 字段名 去重显示高级查询条件模糊匹配
• 基本用法
知
识
讲
解
– WHERE 字段名 LIKE ' 通配字串 '
– 通配符 _ 匹配单个字符
– % 匹配 0~N 个字符
• 示例
– 列出 name 值“以 J 开头或以 Y 结尾”的记录正则匹配
• 基本用法
知
识
讲
解
– WHERE 字段名 REGEXP ' 正则表达式‘
– ^ $ . [ ] *
• 示例
– 列出 name 值“以 J 开头或以 Y 结尾”的记录四则运算
• 运算操作mysql> select name from t2 where name like '%a%';
– 字段必须是数值类型
知
识
讲
解
类 型
用 途
+ 加法
- 减法
* 乘法
/ 除法
% 取余数(求模)聚集函数
• MySQL 内置数据统计函数
知
识
讲
解
– avg( 字段名 ) : 求平均值mysql> select name from t2 where name like '%a%';
– sum( 字段名 ) :求和
– min( 字段名 ) : 统计最小值
– max( 字段名 ) :统计最大值
– count( 字段名 ) :统计个数操作查询结果查询结果排序
• 基本用法
知
识
讲
解
– SQL 查询
ORDER BY 字段名
[ asc | desc ]
通常是数值类型字段查询结果分组
• 基本用法mysql> select min(uid) from t1 where id<=10
知
识
讲
解
– SQL 查询
group by 字段名
通常是字符类型字段查询结果过滤
• 基本用法
知
识
讲
解
– SQL 查询 HAVING 条件表达式;mysql> select name,uid,gid,(uid + gid) / 2 pjjz from t1 where name="root";
– SQL 查询 where 条件 HAVING 条件表达式;
– SQL 查询 group by 字段名
式;
HAVING 条件表达限制查询结果显示行数mysql> select name,uid,gid,(uid + gid) / 2 pjjz from t1 where name="root";
• 基本用法
知
识
讲
解
– SQL 查询 LIMIT N; 显示查询结果前 N 条记录
– SQL 查询 LIMIT N,M ;显示指定范围内的查询记录
– SQL 查询 where 条件查询 LIMIT N ;显示查询
结果前 N 条记录
– SQL 查询 where 条件查询 LIMIT N , M ;显
示指定范围内的查询记录案例 4 :查询及匹配条件
• 练习常见的 SQL 查询及条件设置
课
堂
练
习
– 创建 stu_info 表,并插入数据
– 练习常见 SQL 查询及条件设置总结和答疑
总结和答疑
查询表记录 查询方式总结
数据导入 问题现象
故障分析及排除
数据导出
问题现象
故障分析及排除查询表记录查询方式总结
知
识
讲
解
查询方式 关键字
查询条件 where
分组 / 排序 / 限制条
目数 / 查询结果过滤 order by/group by/limit/having
单表查询 select .. .. from .. .. where .. ..
嵌套查询 select .. .. from .. .. Where .. .. (select .. .. )
多表查询 select .. .. from 表 1, 表 n where .. ..
左连接查询 left .. .. Join .. .. on
右连接查询 right .. .. join .. .. on数据导入问题现象
• 数据导入失败
知
识
讲
解
– 报错 1 : Errcode: 13 - Permission denied: .. ..
– 报错 2 : Data too long for column .....
mysql> load data infile "/tmp/a.txt" into table user fields
terminated by ":" lines terminated by "\n";
ERROR 29 (HY000): File '/tmp/a.txt' not found (Errcode: 13 -
Permission denied)
mysql> load data infile "/tmp/a.txt" into table user fields
terminated by ":" lines terminated by "\n";
ERROR 1406 (22001): Data too long for column 'comment' at row
1故障分析及排除
• 问题 1 :
知
识
讲
解
– SELinux 策略阻止访问文件
mysql> alter table t1 add age tinyint(2) unsigned default 18 after name;
– 可执行 setenforce 0 禁用 SELinux
• 问题 2 :
– 导入数据与字段类型不匹配,需要修改字段类型:
alter table 表 modify 字段名 类型 .. ..数据导出问题现象
• 导出数据保存到自定义目录失败
– 报错: (Errcode: 13 - Permission denied) .. ..
知
识
讲
解
mysql> select user,host from mysql.user into outfile
"/datadir/b.txt";
ERROR 1 (HY000): Can't create/write to file '/datadir/b.txt' (Errcode:
13 - Permission denied)故障分析及排除
• 原因分析
– 对目录没有 w 权限
知
识
讲
解
• 解决办法
– 让 mysql 用户对目录有 w 权限
[root@dbsvr1 ~]# chown mysql /datadir/
[root@dbsvr1 ~]# ls -ld /datadir
drwxr-xr-x. 2 mysql root 4096 5 月 20 23:09 /datadir2) | YES | | NULL | |