Как войти в базу данных без имени пользователя и пароля?
Я хочу войти в базу данных, запустив файл 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, то есть все разрешения для владельца и ничего для других).