当我在debian上保存mariadb上的视图时(6)我丢失了代码的注释和格式。 mariadb的这个功能是什么?如果关闭怎么转?在Windows实例上存储所有注释和格式。
两个实例都是MariaDB 10.0.17。 使用Windows中的Heidi 9.1进行管理。
编辑1。 半解决了。 view.frm的LOAD_FILE返回null,文件权限的原因。 chmod od这个文件是660文件自己的mysql,组mysql。当我manualy放,即666 chmod所有的作品。 Deamon由mysql用户运行。使用具有授权文件权限的mariadb root用户进行管理。
编辑2。 LOAD_FILE只适用于所有用户都有读取标志的文件,文件的所有者无关紧要...我也经过了ubuntu 14.04 lts的测试,同样的问题也出现了。好像像mariadb debian / ubuntu bug ... 我使用auditd来检查对文件的访问。当文件没有读取标志时,没有发生任何事件...... 有什么想法吗?
编辑3。 https://mariadb.com/kb/en/mariadb/load_file/ 必须为所有人阅读文件...
所以问题是:如何为.frm(或所有......)文件设置默认chmod(读取所有标志)?(暂时,开发时间)
答案 0 :(得分:0)
终于解决了。 HeidiSQL尝试通过LOAD_FILE
函数从.frm文件加载视图查询,该文件需要带有read for all标志的文件。默认创建模式db文件为0660(目录为0700)。我们可以通过include来改变它来启动脚本(即/etc/init.d/mysql),即export UMASK=064
(这是OR - 而不是AND)更多信息:https://mariadb.com/kb/en/mariadb/specifying-permissions-for-schema-data-directories-and-tables/
答案 1 :(得分:0)
好的,我对我的环境有另一个答案(Mariadb 10.1 + Ubuntu 16.04 LTS)
创建一个新文件; /etc/systemd/system/mariadb.service.d/MY_SPECIAL.conf包含以下行;
[服务]
环境=" UMASK = 0664"
这似乎将frm的权限设置为-rw-rw-r--同时允许LOAD_FILE读取视图/存储过程/其他源。
我希望这有助于其他人!
答案 2 :(得分:0)
这对我很有帮助!谢谢!
[https://mariadb.com/kb/en/systemd/#configuring-the-umask]
sudo tee /etc/systemd/system/mariadb.service.d/umask.conf <<EOF
[Service]
Environment="UMASK=0664"
EOF
sudo systemctl daemon-reload
然后保存视图并由HeidiSQL不变地再次读取(带有注释/换行符/等)。