Как войти в базу данных без имени пользователя и пароля?

Я хочу войти в базу данных, запустив файл SQL из сценария UNIX без указания имени пользователя и пароля (от имени пользователя root). Любая команда, чтобы сделать это?

2 ответа

Вы можете сохранить имя пользователя и пароль в ~/.my.cnf

[mysql]
user=foo
password=bar

Но этот файл не зашифрован, поэтому остерегайтесь этого.

Многие клиентские программы, включая mysql, могут получать пароли из командной строки. Пытаться

mysql -u root -pROOT_PASSWORD DATABASE_NAME

Где ROOT_PASSWORD - пароль для учетной записи root mysql. Вы также можете использовать сертификаты для входа в систему.

Поскольку существует некоторая путаница, по крайней мере последние версии mysql маскируют ваш пароль из списка процессов. Вы можете проверить это, выполнив вышеупомянутую команду, а затем в другом терминале

ps auxw | grep mysql

Если вы видите что-то вроде

mysql -u root -px xxxxx

(где -px xxxxx именно это, а не ваш пароль), то ваш пароль не отображается в списке процессов.


Соображения безопасности:

  • Как отметил @Lekensteyn в комментариях, имейте в виду, что выполняемые вами команды будут сохранены в файле истории (доступном для чтения только пользователю и пользователю root). Вы можете предотвратить это, например, отключив HISTFILE переменная.
  • Ваш сценарий должен быть защищен с правильными разрешениями (например, 700, то есть все разрешения для владельца и ничего для других).
Другие вопросы по тегам