尝试将文件导入MySQL(5.7.16),在Mac上获得了错误代码:1290(--secure-file-priv)

时间:2016-11-12 09:02:38

标签: mysql macos homebrew workbench

我使用Homebrew安装了MySQL(5.7.16),现在我尝试导入一个sql.file,这里是我收到的通知。错误代码:1290(--secure-file-priv)。我的mac是10.12.1。我看到了另一个答案,它建议解决方案是应该添加secure-file-priv ="" MySQL ERROR 1290 (HY000) --secure-file-priv option

但是我怎么能在mac上做到这一点?

2 个答案:

答案 0 :(得分:0)

我刚被迫升级到Sierra(10.12.1),最终下载了5.7.16。我遇到了无法导入/导出的问题。要解决此问题,必须在mysql命令中包含--secure-file-priv选项。由于我安装了mysql以自动启动,因此选项由plist文件控制。在我的安装上,它是

/Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist

根据操作系统和安装方式(源,pkg,macports等),您的默认启动过程可能会有所不同。我使用dmg从Oracle安装并使用此plist文件控制我的启动。如果你这样做,用sudo编辑plist文件(我用vi):

sudo vi /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist 

你应该看到一个看起来像

的部分
<key>ProgramArguments</key>
    <array>
        <string>/usr/local/mysql/bin/mysqld</string>
        <string>--user=_mysql</string>
        <string>--basedir=/usr/local/mysql</string>
        <string>--datadir=/usr/local/mysql/data</string>
        <string>--plugin-dir=/usr/local/mysql/lib/plugin</string>
        <string>--log-error=/usr/local/mysql/data/mysqld.local.err</string>
        <string>--pid-file=/usr/local/mysql/data/mysqld.local.pid</string>
        <string>--secure-file-priv=/PATH/TO/DIR/</string>
    </array>

将最后一行添加/编辑到要从/导出/导出的目录。

在mysql中使用IMPORT或EXPORT时,必须使用完整路径文件名,即:

select * from user INTO OUTFILE "/PATH/TO/DIR/file.txt";

尝试使用文件名不会起作用。如果你计划导出,目录也需要写权限(我的目录在我的个人用户空间下,并且需要使指定的目录可写入所有 - 即

chmod a+w /PATH/TO/DIR

这解决了我的问题。

答案 1 :(得分:0)

对于通过MAMP安装的MySQL(在Mac上):

在本地用户帐户中启用文件i / o:

  1. 打开“MAMP”使用聚光灯
  2. 点击“停止服务器”
  3. 编辑〜/ .my.cnf(使用vi或您喜欢的编辑器)和以下几行:

    $ vi~ / .my.cnf

  4. [mysqld_safe]
    [mysqld]
    secure_file_priv="/Users/russian_spy/"
    
    1. 单击“启动服务器”(在MAMP窗口中)
    2. 现在检查它是否有效:

      一个。启动mysql(默认MAMP用户是root,密码也是root)

      $ /Applications/MAMP/Library/bin/mysql -u root -p 
      

      湾在mysql中查看列入白名单的路径

      mysql> SELECT @@GLOBAL.secure_file_priv;
      +---------------------------+
      | @@GLOBAL.secure_file_priv |
      +---------------------------+
      | /Users/russian_spy/          |
      +---------------------------+
      1 row in set (0.00 sec)
      

      ℃。最后,通过将表train导出到CSV文件

      进行测试
      mysql> SELECT * FROM train INTO OUTFILE '/Users/russian_spy/test.csv' FIELDS TERMINATED BY ',';
      Query OK, 992931 rows affected (1.65 sec)
      
      mysql>