Интегрированная аутентификация для MySQL - PullRequest
3 голосов
/ 28 ноября 2008

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

Ответы [ 4 ]

1 голос
/ 28 ноября 2008

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

Во-вторых, да, вам, скорее всего, придется куда-то вводить пароль, если только вы не настроите учетную запись приложения для использования пустого пароля ...

0 голосов
/ 12 октября 2018

Перемотка вперед на десять лет, и теперь вы можете использовать сокет аутентификации для входа в систему:

CREATE USER 'user'@'localhost' IDENTIFIED WITH auth_socket;

С консоли вы можете войти без пароля напрямую:

mysql -u user

Не совсем уверен, как вы будете делать строку подключения из других приложений в этом случае, я все еще ищу это сам ...

Этот метод работает только для локальных подключений, но не для подключений TCP / IP. См. Руководство по MySQL Глава 11: Включение аутентификации .

0 голосов
/ 28 ноября 2008

Вы можете жестко ввести пароль, что, как вы говорите, не особенно приятно. Например. в PHP:

 $connection = mysql_connect('HOSTNAME', 'USERNAME', 'PASSWORD')
   or die('Could not connect: ' . mysql_error());

 mysql_select_db('DATABASE') or die('Could not select database');

Кроме того, вы можете загрузить пароль из файла конфигурации, в этом случае вы можете сохранить его в зашифрованном виде, но если кто-то увидит ваш исходный код и увидит, как вы его расшифровываете, он сможет расшифровать его. это тоже.

0 голосов
/ 28 ноября 2008

Вы можете поместить настройки в файл .my.cnf:

[Client]
user=ken
password=ken
host=localhost
database=foo

Вы можете использовать разные конфигурационные файлы, используя опцию --defaults-file

Дополнительная информация о файлах опций на dev.mysql.com

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...