Встроенная аутентификация для mysql

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

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
3
0
1 615
4

Ответы 4

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

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

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

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

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

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

Извините, но вы не совсем поняли суть. Я не спрашиваю, где хранить пароль - я могу в значительной степени сделать это в файле конфигурации для моего собственного приложения, но вместо этого я бы вообще хотел избежать этого. Встроенная проверка подлинности Windows означает, что учетные данные ОС сопоставляются с учетными данными БД.

azerole 28.11.2008 15:34

Вы можете жестко запрограммировать пароль, что, как вы говорите, не очень приятно. Например. в 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: Включение аутентификации.

Другие вопросы по теме