Как создать пользователя 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 с миллионами записей на небольшой машине с процессором/памятью.