MySQL导出CSV文件报错secure-file-priv权限受限mac
MySQL导出文件遇到secure-file-priv报错
前两天在电脑上安装了MySQL 8.0.18,在尝试从数据库导出csv文件时,遇到了以下报错:
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
secure-file-priv资料查询
上网一搜发现报错原因和secure-file-priv的值有关,secure-file-priv参数是用来限制mysql导入导出到哪个目录的。
查阅官方文档找到secure-file-priv的值有以下几种情况:
[外链图片转存中…(img-TKY9txDb-1572537802321)]
而使用命令 show variables like "%secu%";
检查secure-file-priv的值,发现本地secure_file_priv的值设置的是NULL,那么就需要将secure_file_priv的值设置为空字符串或者dirname才能导出文件。
[外链图片转存中…(img-A9za5MJP-1572537802323)]
解决办法
那么接着问题来了,在哪里设置secure-file-priv的值呢?
不能直接设置,必须要在my.cnf文件里设置(mac在my.cnf)。
那么my.cnf文件在哪里呢?
在下面3个关键目录中使用find命令全部搜了一遍也没有找到my.cnf文件,没有办法只有在网上重新找了一个my.cnf文件。
/etc
/usr/local/mysql/support-files
/usr/local/mysql-8.0.18-macos10.14-x86_64/support-files
在找到my.cnf后,进入/etc目录下,使用sudo vim my.cnf
命令新建my.cnf文件,并将以下内容添加到my.cnf文件中。
# Example MySQL config file for medium systems. # # This is for a system with little memory (32M - 64M) where MySQL plays # an important part, or systems up to 128M where MySQL is used together with # other programs (such as a web server) # # MySQL programs look for option files in a set of # locations which depend on the deployment platform. # You can copy this option file to one of those # locations. For information about these locations, see: # http://dev.mysql.com/doc/mysql/en/option-files.html # # In this file, you can use all long options that a program supports. # If you want to know which options a program supports, run the program # with the "--help" option. # The following options will be passed to all MySQL clients [client]default-character-set=utf8password = your_passwordport = 3306 socket = /tmp/mysql.sock # Here follows entries for some specific programs # The MySQL server [mysqld]character-set-server=utf8init_connect='SET NAMES utf8port = 3306 socket = /tmp/mysql.sock skip-external-locking key_buffer_size = 16M max_allowed_packet = 1M table_open_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M character-set-server=utf8 init_connect='SET NAMES utf8' secure_file_priv=''
# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (via the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking # Replication Master Server (default) # binary logging is required for replication log-bin=mysql-bin # binary logging format - mixed recommended binlog_format=mixed # required unique id between 1 and 2^32 - 1 # defaults to 1 if master-host is not set # but will not function as a master if omitted server-id = 1 # Replication Slave (comment out master section to use this) # # To configure this host as a replication slave, you can choose between # two methods : # # 1) Use the CHANGE MASTER TO command (fully described in our manual) - # the syntax is: # # CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>, # MASTER_USER=<user>, MASTER_PASSWORD=<password> ; # # where you replace <host>, <user>, <password> by quoted strings and # <port> by the master's port number (3306 by default). # # Example: # # CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306, # MASTER_USER='joe', MASTER_PASSWORD='secret'; # # OR # # 2) Set the variables below. However, in case you choose this method, then # start replication for the first time (even unsuccessfully, for example # if you mistyped the password in master-password and the slave fails to # connect), the slave will create a master.info file, and any later # change in this file to the variables' values below will be ignored and # overridden by the content of the master.info file, unless you shutdown # the slave server, delete master.info and restart the slaver server. # For that reason, you may want to leave the lines below untouched # (commented) and instead use CHANGE MASTER TO (see above) # # required unique id between 2 and 2^32 - 1 # (and different from the master) # defaults to 2 if master-host is set # but will not function as a slave if omitted #server-id = 2 # # The replication master for this slave - required #master-host = <hostname> # # The username the slave will use for authentication when connecting # to the master - required #master-user = <username> # # The password the slave will authenticate with when connecting to # the master - required #master-password = <password> # # The port the master is listening on. # optional - defaults to 3306 #master-port = <port> # # binary logging - not required for slaves, but recommended #log-bin=mysql-bin # Uncomment the following if you are using InnoDB tables #innodb_data_home_dir = /usr/local/mysql/data #innodb_data_file_path = ibdata1:10M:autoextend #innodb_log_group_home_dir = /usr/local/mysql/data # You can set .._buffer_pool_size up to 50 - 80 % # of RAM but beware of setting memory usage too high #innodb_buffer_pool_size = 16M #innodb_additional_mem_pool_size = 2M # Set .._log_file_size to 25 % of buffer pool size #innodb_log_file_size = 5M #innodb_log_buffer_size = 8M #innodb_flush_log_at_trx_commit = 1 #innodb_lock_wait_timeout = 50 [mysqldump] quick max_allowed_packet = 16M [mysql] no-auto-rehash # Remove the next comment character if you are not familiar with SQL #safe-updates default-character-set=utf8 [myisamchk] key_buffer_size = 20M sort_buffer_size = 20M read_buffer = 2M write_buffer = 2M [mysqlhotcopy] interactive-timeout
注意!!!
一定要把上面文本中的password = your_password
修改成自己的MySQL数据库的密码,我就是忘记改了,搞了3天,不管怎么修改secure_file_priv=’’,在重启数据库都没有用,终于在第3天重新梳理了一遍流程,仔细研究了my.cnf文件后,发现了问题所在。
修改好后,在系统偏好设置的MySQL中配置Configuration File文件,重新Apply然后再重启MySQL服务就可以了。
[外链图片转存中…(img-Wi0Gai5F-1572537802323)]
见证奇迹的时刻
一切准备就绪,让我们重新再来导出一次user表
mysql> select * from user into outfile '/tmp/user.csv';
Query OK, 4 rows affected (0.00 sec)
大功告成!
###补充
虽然secure_file_priv设置为空字符串,也就是说可以任意导入导出到任何文件目录下,但是我也试了桌面和etc文件夹,都导出失败了,上网查询原因可能与文件访问权限、文件分组有关,这里就不再详细讨论了,/tmp
目录是可以导入导出的,大家可以在这个目录下导出csv文件。
mysql> select * from user into outfile '~/Desktop/user/user.csv';
ERROR 1 (HY000): Can't create/write to file '/var/empty/Desktop/user/user.csv' (OS errno 2 - No such file or directory)
mysql> select * from user into outfile '/etc/user.csv';
ERROR 1 (HY000): Can't create/write to file '/etc/user.csv' (OS errno 13 - Permission denied)
参考文章:
- MySQL官方开发者文档对secure_file_priv变量的描述
- mac os上mysql secure-file-priv导入文件权限解决方案
如果对你有帮助的话,点赞、评论、赞赏都是对我的鼓励,也是支持我写下去的动力,谢谢!
MySQL导出CSV文件报错secure-file-priv权限受限mac相关推荐
- mysql导出txt文件报错_mysql导入txt文件
1.首先在命令行启动mysql net start mysql 2.登录MySQL(建议使用非root用户) mysql --local-infile=1 -u one -p 3.创建数据库 如 CR ...
- mysql csv 表头_Mysql实例mysql 导出CSV文件 并带表头的方法
<Mysql实例mysql 导出CSV文件 并带表头的方法>要点: 本文介绍了Mysql实例mysql 导出CSV文件 并带表头的方法,希望对您有用.如果有疑问,可以联系我们. 参考官方文 ...
- ffmpeg合并文件报错Unsafe file name Operation not permitted
ffmpeg合并文件报错 Unsafe file name '/data/hk_sdk/demo/aaa.mp4' /data/hk_sdk/demo/test.txt: Operation not ...
- Windows用scp服务器下载文件报错No file or directionary
问题描述 在Windows从命令行scp从linux服务器下载文件报错No file or directionary,查找相关的技术文档无果.其他问答里出现的错误基本为终端登录服务器后的下载文件报错, ...
- CAJ文件报错提示“file does not exist”之类如何解决
我在使用7.2版本的CAJ阅读器查看CAJ文件的时候,无论打开什么文件,都会报错"the file does not exist"之类的提示:然而在无意间的搜索中,我想起(至少在该 ...
- php mysql导出csv文件_详解PHP导入导出CSV文件
我们先准备mysql数据表,假设项目中有一张记录学生信息的表student,并有id,name,sex,age分别记录学生的姓名.性别.年龄等信息. CREATE TABLE `student` ( ...
- 解决datafountain比赛提交.csv文件报错问题
提交了predict.csv文件之后发现报错如下:decode error,it isn;tInteger 1 问题出在了某些csv列数据包含多余的\n文件 可以用如下代码: import csv f ...
- Eclipse导出APK文件报错 android lint problem
今天准备用Eclipse导出APK文件上传各大安卓应用商店,结果发现血红一片. 继续导出,报错如下: 百度了一下,发现是android lint problem错误 Lint经常会扫描出一些必需要修复 ...
- python处理csv文件报错:UnicodeDecodeError
python处理csv文件的默认解码方式为'gbk'(这可能是因为,中文ansi编码是gbk),但是我们在创建csv文件时,经常会选择utf-8编码,这样的文件在解码时就会报错. 如以下文件 #1.c ...
最新文章
- QIIME 2用户文档. 14机器学习预测样品元数据分类和回归q2-sample-classifier(2018.11)
- 战争游戏[tarjan]
- 20172319 2018.10.12《Java程序设计教程》第6周课堂实践(补写博客)
- Detection and Classification of Acoustic Scenes and Events(DCASE2013详细介绍)
- 深度学习-CNN tensorflow 可视化
- php微信公众平台开发获取access_token,用CURL出现certificate verify failed错误的解决方法...
- Hyper-v中安装centos网卡故障
- python迭代器生成器
- 最新网卡驱动下载win7
- Word中,Mathtype安装遇到的问题及解决方法
- Xpath--使用Xpath爬取糗事百科成人版图片
- dea分析的matlab实现,利用MATLAB进行DEA交叉评价分析
- 起名源码PHP(宝宝取名源码)
- 使用冷门装机助手/流氓软件导致被捆绑安装各种奇奇怪怪软件的问题
- 数据抽取的常见理论方法
- cad绘制正八边形_软件CAD | 各种“线”工具
- 天池竞赛:Docker 基本操作
- HC-SR501人体红外感应模块程序
- 处方常用拉丁词缩写与中文对照表
- linux的normal模式,解决grub rescue问题时发现grub/目录下没有文件normal.mod怎么办?...
热门文章
- bzoj 3998 第K小子串
- Android Studio 4报错-The application could not be installed: INSTALL_FAILED_OLDER_SDK
- Qt构建、运行、qmake的区别
- 渗透实战-抓取微信小程序流量包
- 软件小白-入门软件测试管理工具”禅道“
- favicon.ico使用方式
- Java 求解二叉树的深度
- wen7系统下用vc6.0读取摄像头
- 普通人更容易赚钱的三大互联网项目,你一定没注意
- websocketapp保活,来自阿里巴巴佛系Android程序员的指南,写给正在求职的Android开发