mysql 无法输出到文件,无法将MySQL数据输出到文件

我试图将MySQL表中的数据输出到文件但获取权限错误:

$pwd

/home/dotancohen

$mkdir in

$chmod 777 in/

$mysql -ugs -p

mysql> USE someDatabase;

mysql> SELECT * FROM data INTO OUTFILE '/home/dotancohen/in/data.csv';

ERROR 1045 (28000): Access denied for user 'gs'@'localhost' (using password: YES)

mysql>

如果有问题的目录是chmodded到777,那么为什么MySQL用户不能写文件?有趣的是,我无法写入/ tmp /.

编辑:

看起来DB用户具有正确的MySQL权限:

mysql> show grants;

+----------------------------------------------------------------------------------+

| Grants for gs@localhost |

+----------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'gs'@'localhost' IDENTIFIED BY PASSWORD 'somePassword' |

| GRANT ALL PRIVILEGES ON `gs\_%`.* TO 'gs'@'localhost' |

+----------------------------------------------------------------------------------+

2 rows in set (0.01 sec)

解决方法:

Any file created by INTO OUTFILE or INTO DUMPFILE is writable by all

users on the server host. The reason for this is that the MySQL server

cannot create a file that is owned by anyone other than the user under

whose account it is running. (You should never run mysqld as root for

this and other reasons.) The file thus must be world-writable so that

you can manipulate its contents.

您应该将SELECT INTO OUTFILE输出到/ var / lib / mysql,如下所示

SELECT * FROM data INTO OUTFILE 'data.csv';

当然,您需要确保您对gs @ localhost拥有FILE权限.

有两种方法可以获得此权限

方法#1

GRANT FILE ON *.* TO 'gs'@'localhost';

方法#2

UPDATE mysql.user SET File_priv = 'Y' WHERE user='gs' AND host='localhost';

FLUSH PRIVILEGES;

更新2012-05-01 07:09 EDT

要为自己提供FILE权限,请执行以下操作:

> STEP 01)service mysql restart –skip-networking –skip-grant-tables

>步骤02)mysql

>步骤03)UPDATE mysql.user SET File_priv =’Y’WHERE user =’gs’AND host =’localhost’;

>步骤04)退出

> STEP 05)服务mysql重启

标签:linux,mysql,permissions

来源: https://codeday.me/bug/20190805/1589204.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值