Skip to content

Instantly share code, notes, and snippets.

@mjfrigaard
Last active August 24, 2018 01:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mjfrigaard/f99a47890451e5b00cfb45510d9712b8 to your computer and use it in GitHub Desktop.
Save mjfrigaard/f99a47890451e5b00cfb45510d9712b8 to your computer and use it in GitHub Desktop.
Setting secure_file_priv to local folder in MySQL 8.0 (Mac OSX) - SO post

I am working on this portion of the MySQL tutorial for loading data from a .TSV file.

I have this data file:

pet_file

name	owner	species	sex	birth	death
Fluffy	Harold	cat	f	1993-02-04	
Claws	Gwen	cat	m	1994-03-17	
Buffy	Harold	dog	f	1989-05-13	
Fang	Benny	dog	m	1990-08-27	
Bowser	Diane	dog	m	1979-08-31	1995-07-29
Chirpy	Gwen	bird	f	1998-09-11	
Whistler	Gwen	bird		1997-12-09	
Slim	Benny	snake	m	1996-04-29	

Stored in this location:

/Users/martinfrigaard/MySQLData/pet.txt

My first attempt used the following commands,

LOAD DATA INFILE '/pet.txt' INTO TABLE pet
LINES TERMINATED BY '\r';

and it brought the following error:

  ERROR 1148 (42000): The used command is not allowed with this MySQL version

After reading and searching the internet, I found an SO post on how to change the local_infile settings.

SET GLOBAL local_infile = true;
-- Query OK, 0 rows affected (0.00 sec)

And when I checked:

SHOW GLOBAL VARIABLES LIKE 'local_infile';

This looked like it worked.

  +---------------+-------+
  | Variable_name | Value |
  +---------------+-------+
  | local_infile  | ON    |
  +---------------+-------+
  1 row in set (0.00 sec)

But when I run the LOAD DATA file command again,

LOAD DATA INFILE '/pet.txt' INTO TABLE pet
LINES TERMINATED BY '\r';

it results in the following error.

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

Setting the GLOBAL secure-file-priv import settings?

I have adjusted the settings in the configuration file in three locations:

1.) As according to this post

mmbp:~ martinfrigaard$ cat ~/.my.cnf
[mysqld_safe]
[mysqld]
secure_file_priv="/Users/martinfrigaard/MySQLData"
  1. According to this post

     mmbp:~ martinfrigaard$ cat .my.cnf
     [mysqld_safe]
     [mysqld]
     secure_file_priv="/Users/martinfrigaard/MySQLData"
    
  2. And according to this post

       GNU nano 2.9.8 /etc/my.cnf                                                                      
       [mysqld]
       [mysql]
       secure-file-priv = "/Users/martinfrigaard/MySQLData"
    

But when I restart mysql and check the secure-file-priv settings,

mysql> SHOW VARIABLES LIKE 'secure_file_priv';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| secure_file_priv | NULL  |
+------------------+-------+
1 row in set (0.00 sec)

I see this is still null. Any ideas on what else I am missing?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment