Пользователь “mysql” существует в системе баз данных MySQL?

Я знаю, что это не отвечает на Ваш вопрос, но если Вы искали другой способ переименовать файлы по сравнению с Вашим обходным циклом, почему бы не использовать find? Я использовал эту команду много раз, чтобы заменить расширения файлов в больших каталогах на сотни тысяч файлов. Это должно работать на любой POSIX-совместимой системе:

find . -name "*.gappedPeak" -exec sh -c 'mv "$1" "${1%.gappedPeak}.bed"' _ {} \;

Command Breakdown:

  1. '. ' => путь поиска, начинающийся с текущей директории, помеченной ' . '

  2. -name => установить имя поиска совпадений (в этом случае все файлы, которые заканчиваются на .gappedPeak)

  3. -exec => для каждого совпадения

  4. sh -c => 'exec' создает независимое окружение оболочки для каждого совпадения

  5. mv "$1" "${1%". gappedPeak}.bed" => mv первая переменная (обозначена $1), который является текущим именем файла, на новое имя. Здесь я делаю сравнение подстроки и удаляю; поэтому снова возьмите первый var, $1 и используйте % для удаления .gappedPeak из строки. В конце .bed просто соединяет оставшуюся переменную, которая теперь является просто тестом #, с .bed, создавая новый test #.bed.filename.

  6. Подчёркивание - это место для $0

  7. Имя {} заменяется именем каждого (*.gappedPeak) найденного файла. командой найти и становится 1 командой sh .

  8. \; отмечает конец команды -exec.  Вы также можете использовать ';' или ";".

Пример:

[user@before]# ls -lh
total 0
-rw-r--r--. 1 root root 0 Jan 26 11:40 test1.gappedPeak
-rw-r--r--. 1 root root 0 Jan 26 11:40 test2.gappedPeak
-rw-r--r--. 1 root root 0 Jan 26 11:40 test3.gappedPeak
-rw-r--r--. 1 root root 0 Jan 26 11:40 test4.gappedPeak
-rw-r--r--. 1 root root 0 Jan 26 11:40 test5.gappedPeak

[user@after]# ls -lh
total 0
-rw-r--r--. 1 root root 0 Jan 26 11:40 test1.bed
-rw-r--r--. 1 root root 0 Jan 26 11:40 test2.bed
-rw-r--r--. 1 root root 0 Jan 26 11:40 test3.bed
-rw-r--r--. 1 root root 0 Jan 26 11:40 test4.bed
-rw-r--r--. 1 root root 0 Jan 26 11:40 test5.bed
0
29.09.2016, 01:19
2 ответа

Как более общее решение, вы можете использовать xargs . Таким образом, вы можете отделить действие из списка каталогов, на которых вы хотите работать.

Сначала напишите скрипт, который выполняет необходимые действия:

Perfort_Ander.sh

#!/bin/bash

# Exit immediately on error
set -e

if [[ $# -ne 1 ]] ; then
  echo "USAGE: $0 DIRECTORY" >&2
  exit 1
fi

cd "$1"

ls -l ander ander.band ander.data
cat ander.in
cat ander.log
pwd

Отметьте скрипт в виде исполняемого файла:

chmod +x perform_ander.sh

Наконец-то запускается:

find -type d -name 'E*_U' | xargs -n1 ./perform_ander.sh

Объяснение

Найти

A Найти Команда выводит все соответствующие файлы на STDOUT

-TYPE D Пределы поиска по каталогам

-NAME 'E * _U' ограничивает поиск каталогов, которые соответствуют глобусу

XARGS

Команда xargs Команда использует свой стандартный вход в качестве источника аргументов и вызывает заданные команды с этими аргументами.

-N1 Указывает, что не более 1 аргумента пропускается одновременно.

-121--105577-

Обычно создается учетная запись ОС MySQL . Это пользователь, который запускает MySQL-демон.

Большинство пакетов, которые поставляются с демоном, создаст свою собственную учетную запись пользователя, чтобы предотвратить вмешательство или проблемы безопасности между различными пакетами.

Пользователь под названием MySQL не создается автоматически в рамках базы данных.

0
28.01.2020, 04:58

пользователи , перечисленные в таблице MySQL пользователь , отличаются от учетных записей операционной системы (входа), хотя могут использоваться те же имена .

Например, типичная база данных MySQL имеет пользователя root , который является администратором. Но его пароль хранится в базе данных MySQL, а операционная система хранит свой пароль в / etc / shadow (или, реже, в / etc / passwd сейчас).

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

имена , используемые для пользователей базы данных MySQL, не обязательно должны иметь какое-либо отношение к именам таблицы в базе данных.Это отличается от базы данных Oracle, которая хранит таблиц в схемах , которые соответствуют пользователям . Пользователи Oracle также имеют пароли и (как и MySQL) им могут быть предоставлены привилегии. Как и в Oracle, привилегии пользователей MySQL могут быть ограничены таблицами.

Дополнительная литература:

0
28.01.2020, 04:58

Теги

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