Как создать пользователя MySQL без пароля - необходимо для удаленного входа в систему - для использования в bash insert script?

Мое требование - создать пользователя для удаленного входа, но без пароля. В моем удаленном пространстве я использую bash script для вставки, что-то вроде:

for i in {1..5000}; do
  mysql -h 11.40.3.169 -uUser -pPass -DDatabaseName <<<
    "insert into DatabaseTableName values('$i','dummy_$i');" &
  echo -n "$i  "
  sleep 1
  date
done

Проблема в том, что каждая вставка занимает почти 4 секунды, и я не могу точно определить проблему, кроме аутентификации, в каждой вставке. Итак, если бы я мог создать пользователя в MySQL с минимальной аутентификацией... Что-то вроде:

# I'm trying to remove this password
GRANT ALL PRIVILEGES TO 'user'@'%' IDENTIFIED BY 'password';

... Все, что вы можете предложить.

Ответы

Ответ 1

Вы можете сделать это, создав пользователя с паролем, а затем разместив файл .my.cnf в домашнем каталоге учетной записи, который запускает bash script, содержащий следующее:

[mysql]
user=user
password=pass
[mysqladmin]
user=user
password=pass

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

Ответ 2

Просто удалите часть IDENTIFIED BY:

GRANT ALL PRIVILEGES ON *.* TO 'user'@'%'

Обратите внимание, что удаленный вход из любого места без пароля является очень небезопасным. Лучше ограничьте допустимый диапазон IP для этого пользователя:

GRANT ALL PRIVILEGES  ON *.* TO 'user'@'allowed_remote_machine'

Ответ 3

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

Ответ 4

Я думаю, ваша проблема заключается в том, что вы запускаете клиент mysql для каждой вставки. Вы должны делать свои вставки из программы php, java и т.д., А не из оболочки script.

Время запуска клиента (и подключение к хосту) убивает вас. Я регулярно делаю 1000 вложений в минуту из программы php или java в базу данных MySQL с миллионами записей на небольшой машине с процессором/памятью.