我正在使用通过ssh访问的远程服务器。 在服务器上有一个mysql数据库,我正在进行查询
SELECT * FROM my_table where date > '2010-01-01'';
到目前为止,当托盘创建输出文件时,问题就出现了:
SELECT * FROM my_table where date > '2010-01-01' INTO OUTFILE '/home/ubuntu/data/my_output.csv';
我收到了权限错误:
ERROR 1 (HY000): Can't create/write to file '/home/ubuntu/data/my_output.csv' (Errcode: 13)
是否有办法将文件直接发送到我的本地计算机而不是先在我无权从数据库中写入文件的服务器上写入文件?
答案 0 :(得分:1)
您可以通过ssh隧道传输mysql端口(在服务器上)。
隧道服务器端口的ssh连接示例(此处位于ubuntu上的.ssh / config文件中):
Host my_mysql_server
Hostname mysql_host_server
Port ssh_port
LocalForward 3307 localhost:3306
User ssh_user
终端示例:
ssh -L 3307:localhost:3306 ... (hostname, ...)
您可以将3307更改为您想要的任何端口(应该是尚未使用的端口)。
然后您可以在本地计算机上进行导出。将您的sql查询放在一个sql文件中(例如:my_query.sql)并通过终端(ubuntu)中的以下命令将其导出:
mysql -h localhost -P 3307 your_database_name -u mysql_user -p < my_query.sql > export.csv