mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 15:50:51 +03:00 
			
		
		
		
	- Implement --secure-file-priv=<dir> option that limits "load_file", "LOAD DATA" and "SELECT .. INTO OUTFILE" to work with files in specified dir. - Use above option for mysqld in mysql-test-run.pl mysql-test/mysql-test-run.pl: Add usage of --secure-file-priv=vardir when starting mysqld mysql-test/r/loaddata.result: Update test result after adding test to check that secure-file-priv works for "load data" and "load_file" mysql-test/r/outfile.result: Update result mysql-test/r/query_cache.result: Can't load from outside of vardir anymore mysql-test/r/type_blob.result: Can't load from outside of vardir anymore mysql-test/t/loaddata.test: Update test result after adding test to check that secure-file-priv works for "load data" and "load_file" mysql-test/t/outfile.test: Update test result after adding test to check that secure-file-priv works for "SELECT .. INTO OUTFILE" mysql-test/t/query_cache.test: Can't load from outside of vardir anymore mysql-test/t/type_blob.test: Can't load from outside of vardir anymore sql/item_strfunc.cc: Check that the path "load_file" uses for the file is within what's specified with --secure-file-priv sql/mysql_priv.h: Add secure_file_priv sql/mysqld.cc: Add "--secure_file_priv" sql/set_var.cc: Add variable "secure_file_priv" to "show variables" sql/sql_class.cc: Check that the path "load_file" uses for the file is within what's specified with --secure-file-priv sql/sql_class.h: Fix spelling error sql/sql_load.cc: Check that the path "load_file" uses for the file is within what's specified with --secure-file-priv sql/share/errmsg.txt: Fix swedish error message for ER_OPTION_PREVENTS_STATMENT wich was hardcoded to --skip-grant-tables
		
			
				
	
	
		
			159 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			159 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| drop table if exists t1, t2;
 | |
| create table t1 (a date, b date, c date not null, d date);
 | |
| load data infile '../std_data_ln/loaddata1.dat' into table t1 fields terminated by ',';
 | |
| Warnings:
 | |
| Warning	1265	Data truncated for column 'a' at row 1
 | |
| Warning	1265	Data truncated for column 'c' at row 1
 | |
| Warning	1265	Data truncated for column 'd' at row 1
 | |
| Warning	1265	Data truncated for column 'a' at row 2
 | |
| Warning	1265	Data truncated for column 'b' at row 2
 | |
| Warning	1265	Data truncated for column 'd' at row 2
 | |
| load data infile '../std_data_ln/loaddata1.dat' into table t1 fields terminated by ',' IGNORE 2 LINES;
 | |
| SELECT * from t1;
 | |
| a	b	c	d
 | |
| 0000-00-00	NULL	0000-00-00	0000-00-00
 | |
| 0000-00-00	0000-00-00	0000-00-00	0000-00-00
 | |
| 2003-03-03	2003-03-03	2003-03-03	NULL
 | |
| 2003-03-03	2003-03-03	2003-03-03	NULL
 | |
| truncate table t1;
 | |
| load data infile '../std_data_ln/loaddata1.dat' into table t1 fields terminated by ',' LINES STARTING BY ',' (b,c,d);
 | |
| Warnings:
 | |
| Warning	1265	Data truncated for column 'c' at row 1
 | |
| Warning	1265	Data truncated for column 'd' at row 1
 | |
| Warning	1265	Data truncated for column 'b' at row 2
 | |
| Warning	1265	Data truncated for column 'd' at row 2
 | |
| SELECT * from t1;
 | |
| a	b	c	d
 | |
| NULL	NULL	0000-00-00	0000-00-00
 | |
| NULL	0000-00-00	0000-00-00	0000-00-00
 | |
| NULL	2003-03-03	2003-03-03	NULL
 | |
| drop table t1;
 | |
| create table t1 (a text, b text);
 | |
| load data infile '../std_data_ln/loaddata2.dat' into table t1 fields terminated by ',' enclosed by '''';
 | |
| Warnings:
 | |
| Warning	1261	Row 3 doesn't contain data for all columns
 | |
| select concat('|',a,'|'), concat('|',b,'|') from t1;
 | |
| concat('|',a,'|')	concat('|',b,'|')
 | |
| |Field A|	|Field B|
 | |
| |Field 1|	|Field 2' 
 | |
| Field 3,'Field 4|
 | |
| |Field 5' ,'Field 6|	NULL
 | |
| |Field 6|	| 'Field 7'|
 | |
| drop table t1;
 | |
| create table t1 (a int, b char(10));
 | |
| load data infile '../std_data_ln/loaddata3.dat' into table t1 fields terminated by '' enclosed by '' ignore 1 lines;
 | |
| Warnings:
 | |
| Warning	1366	Incorrect integer value: 'error      ' for column 'a' at row 3
 | |
| Warning	1262	Row 3 was truncated; it contained more data than there were input columns
 | |
| Warning	1366	Incorrect integer value: 'wrong end  ' for column 'a' at row 5
 | |
| Warning	1262	Row 5 was truncated; it contained more data than there were input columns
 | |
| select * from t1;
 | |
| a	b
 | |
| 1	row 1
 | |
| 2	row 2
 | |
| 0	1234567890
 | |
| 3	row 3
 | |
| 0	1234567890
 | |
| truncate table t1;
 | |
| load data infile '../std_data_ln/loaddata4.dat' into table t1 fields terminated by '' enclosed by '' lines terminated by '' ignore 1 lines;
 | |
| Warnings:
 | |
| Warning	1366	Incorrect integer value: '
 | |
| ' for column 'a' at row 4
 | |
| Warning	1261	Row 4 doesn't contain data for all columns
 | |
| select * from t1;
 | |
| a	b
 | |
| 1	row 1
 | |
| 2	row 2
 | |
| 3	row 3
 | |
| 0	
 | |
| drop table t1;
 | |
| SET @OLD_SQL_MODE=@@SQL_MODE, @@SQL_MODE=NO_AUTO_VALUE_ON_ZERO;
 | |
| create table t1(id integer not null auto_increment primary key);
 | |
| insert into t1 values(0);
 | |
| select * from t1;
 | |
| id
 | |
| 0
 | |
| select * from t1;
 | |
| id
 | |
| 0
 | |
| SET @@SQL_MODE=@OLD_SQL_MODE;
 | |
| drop table t1;
 | |
| create table t1 (a varchar(20), b varchar(20));
 | |
| load data infile '../std_data_ln/loaddata_dq.dat' into table t1 fields terminated by ',' enclosed by '"' escaped by '"' (a,b);
 | |
| select * from t1;
 | |
| a	b
 | |
| field1	field2
 | |
| a"b	cd"ef
 | |
| a"b	c"d"e
 | |
| drop table t1;
 | |
| create table t1 (a int default 100, b int, c varchar(60));
 | |
| load data infile '../std_data_ln/rpl_loaddata.dat' into table t1 (a, @b) set b=@b+10, c=concat("b=",@b);
 | |
| select * from t1;
 | |
| a	b	c
 | |
| NULL	20	b=10
 | |
| NULL	25	b=15
 | |
| truncate table t1;
 | |
| load data infile '../std_data_ln/rpl_loaddata.dat' into table t1 (a, @b) set c= if(a is null,"oops",a);
 | |
| select * from t1;
 | |
| a	b	c
 | |
| NULL	NULL	oops
 | |
| NULL	NULL	oops
 | |
| truncate table t1;
 | |
| set @c:=123;
 | |
| load data infile '../std_data_ln/rpl_loaddata.dat' into table t1 (@a, b) set c= if(@a is null,@c,b);
 | |
| select * from t1;
 | |
| a	b	c
 | |
| 100	10	123
 | |
| 100	15	123
 | |
| load data infile '../std_data_ln/rpl_loaddata.dat' into table t1 (@a, @b);
 | |
| select * from t1;
 | |
| a	b	c
 | |
| 100	10	123
 | |
| 100	15	123
 | |
| 100	NULL	NULL
 | |
| 100	NULL	NULL
 | |
| select @a, @b;
 | |
| @a	@b
 | |
| NULL	15
 | |
| truncate table t1;
 | |
| load data infile '../std_data_ln/loaddata5.dat' into table t1 fields terminated by '' enclosed by '' (a, b) set c="Wow";
 | |
| select * from t1;
 | |
| a	b	c
 | |
| 1	2	Wow
 | |
| 3	4	Wow
 | |
| 5	6	Wow
 | |
| truncate table t1;
 | |
| load data infile '../std_data_ln/loaddata5.dat' into table t1 fields terminated by '' enclosed by '' (a, b) set c=concat(a,"+",b,"+",@c,"+",b,"+",if(c is null,"NIL",c));
 | |
| select * from t1;
 | |
| a	b	c
 | |
| 1	2	1+2+123+2+NIL
 | |
| 3	4	3+4+123+4+NIL
 | |
| 5	6	5+6+123+6+NIL
 | |
| load data infile '../std_data_ln/loaddata5.dat' into table t1 fields terminated by '' enclosed by '' (a, @b);
 | |
| ERROR HY000: Can't load value from file with fixed size rows to variable
 | |
| create table t2 (num int primary key, str varchar(10));
 | |
| insert into t2 values (10,'Ten'), (15,'Fifteen');
 | |
| truncate table t1;
 | |
| load data infile '../std_data_ln/rpl_loaddata.dat' into table t1 (@dummy,@n) set a= @n, c= (select str from t2 where num=@n);
 | |
| select * from t1;
 | |
| a	b	c
 | |
| 10	NULL	Ten
 | |
| 15	NULL	Fifteen
 | |
| show variables like "secure_file_pri%";
 | |
| Variable_name	Value
 | |
| secure_file_priv	MYSQLTEST_VARDIR/
 | |
| select @@secure_file_priv;
 | |
| @@secure_file_priv
 | |
| MYSQLTEST_VARDIR/
 | |
| set @@secure_file_priv= 0;
 | |
| ERROR HY000: Variable 'secure_file_priv' is a read only variable
 | |
| truncate table t1;
 | |
| load data infile 'MYSQL_TEST_DIR/Makefile' into table t1;
 | |
| ERROR HY000: The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
 | |
| select * from t1;
 | |
| a	b	c
 | |
| select load_file("MYSQL_TEST_DIR/Makefile");
 | |
| load_file("MYSQL_TEST_DIR/Makefile")
 | |
| NULL
 | |
| drop table t1, t2;
 |