При работе с MSSQL в Windows я привык к очень удобной функции, называемой интегрированной аутентификацией. Короче говоря, аутентификация в Windows может дать вам доступ к базе данных, поэтому нет необходимости вводить какой-либо конкретный пароль. Сейчас я разрабатываю приложение для Linux без взаимодействия с пользователем; этому приложению необходим доступ к базе данных mysql для своих собственных целей, так как же мне позволить ему войти в систему? Я обнаружил, что, хотя по умолчанию в mysql создается учетная запись root, эта учетная запись root не имеет связи с root unix, я могу использовать ее, даже если я не являюсь суперпользователем в Linux, а пароль пуст. Конечно, я могу создать специальную учетную запись пользователя в mysql для нужд моего приложения, но в этом случае мне нужно где-то жестко закодировать пароль, что нехорошо. Еще раз - в моем приложении нет взаимодействия с пользователем, поэтому у кого-то нет шанса ввести пароль. У меня отчетливое ощущение, что я упускаю здесь что-то важное. Спасибо за любой совет!






Во-первых, вам действительно следует установить пароль для учетной записи root mysql ...
Во-вторых, да, вам в значительной степени придется где-то указать пароль, если только вы не настроите учетную запись приложения для использования пустого пароля ...
Вы можете поместить настройки в файл .my.cnf:
[Client]
user=ken
password=ken
host=localhost
database=foo
Вы можете использовать разные файлы конфигурации, используя параметр --defaults-file
Дополнительная информация о файлах опций на dev.mysql.com
Вы можете жестко запрограммировать пароль, что, как вы говорите, не очень приятно. Например. в PHP:
$connection = mysql_connect('HOSTNAME', 'USERNAME', 'PASSWORD')
or die('Could not connect: ' . mysql_error());
mysql_select_db('DATABASE') or die('Could not select database');
В качестве альтернативы вы можете загрузить пароль из файла конфигурации, и в этом случае вы можете сохранить его в зашифрованном виде, но если кто-то сможет увидеть ваш исходный код и увидеть, как вы его расшифровываете, они также смогут его расшифровать.
Перенесемся на десять лет вперед, и теперь вы можете использовать сокет аутентификации для входа в систему:
CREATE USER 'user'@'localhost' IDENTIFIED WITH auth_socket;
С консоли вы можете войти в систему напрямую без пароля:
mysql -u user
Не совсем уверен, как бы вы сделали строку подключения из других приложений в этом случае, я все еще ищу это сам ...
Этот метод работает только для локальных подключений, но не для подключений TCP / IP. См. Руководство по MySQL Глава 11: Включение аутентификации.
Извините, но вы не совсем поняли суть. Я не спрашиваю, где хранить пароль - я могу в значительной степени сделать это в файле конфигурации для моего собственного приложения, но вместо этого я бы вообще хотел избежать этого. Встроенная проверка подлинности Windows означает, что учетные данные ОС сопоставляются с учетными данными БД.