То, как у меня может быть запись MySQL, обгоняет в полете как другой пользователь?

Если вы хотите добавить такие функции, как MAX , SUM в предложении выбора, вам нужно сделать getRawOne () или getRawMany () . Это даст вам грубый ответ:

getOneMaximumQuotationVersion() {
    const query = this.createQueryBuilder("quotation");
    query.select("MAX(quotation.quotationVersion)", "max");
    // query.addSelect("MAX(quotation.quotationVersion)", "max");
    return query.getRawOne();
  }
12
задан OMG Ponies 8 May 2011 в 20:32
поделиться

4 ответа

Выходной файл создается процессом mysqld, не Вашим клиентским процессом. Поэтому выходной файл должен принадлежать uid и ценурозу процесса mysqld.

Можно избежать необходимости sudo для доступа к файлу при доступе к нему от процесса под uid или ценурозом, который может получить доступ к файлу. Другими словами, если mysqld создает файлы, принадлежавшие uid и ценурозу "mysql" / "mysql", то добавьте свою собственную учетную запись для группировки "mysql". Затем необходимо смочь получить доступ к файлу, если режим разрешения файла включает групповой доступ.

Править:

Вы удаляете файл в/tmp с режимом разрешения каталога rwxrwxrwt. Липкий бит ('т') означает, что можно удалить файлы, только если uid совпадает с владельцем файла, независимо от полномочий на файле или каталога.

При сохранении выходного файла в другом каталоге, который не имеет липкого набора битов, необходимо смочь удалить файл обычно.

Прочитайте эту выборку из страницы справочника для липкого (8):

ЛИПКИЕ КАТАЛОГИ

Каталог, чей 'липкий бит' установлен, становится каталогом только добавления, или, более точно, каталогом, в котором ограничивается удаление файлов. Файл в липком каталоге может только быть удален или переименован пользователем, если у пользователя есть разрешение записи для каталога, и пользователь является владельцем файла, владельцем каталога или суперпользователем. Эта функция полезно применяется к каталогам, таким как/tmp, который должен быть публично перезаписываем, но должен отрицать, что пользователи лицензия произвольно удаляют или переименовывают файлы друг друга.

11
ответ дан 2 December 2019 в 19:33
поделиться

Не используя "ВЫБОР... В OUTFILE" синтаксис, нет.

Необходимо выполнить запрос (т.е. клиент) как другой пользователь и перенаправить вывод. Например, отредактируйте свой crontab для выполнения следующей команды каждый раз, когда Вы хотите:

mysql db_schema -e 'SELECT col,... FROM table' > /tmp/outfile.txt

Это создаст /tmp/outfile.txt как пользователя, который является crontab, к которому Вы добавили команду.

5
ответ дан 2 December 2019 в 19:33
поделиться

Если у Вас есть другой пользователь, выполняет запрос от крона, он создаст файл как того пользователя.

1
ответ дан 2 December 2019 в 19:33
поделиться

Я просто делаю

sudo gedit /etc/apparmor.d/usr.sbin.mysqld

и добавляю

 /var/www/codeigniter/assets/download/* w,

и

sudo service mysql restart

И все, я могу легко ВЫБРАТЬ В OUTFILE любое имя файла

1
ответ дан 2 December 2019 в 19:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: