2008-11-28 8 views
3

Lorsque je travaillais avec MSSQL sous Windows, j'étais habitué à une fonctionnalité très pratique appelée authentification intégrée. En bref, être authentifié dans Windows peut vous donner accès à la base de données, donc pas besoin de donner un mot de passe spécifique. Maintenant, je développe une application sur Linux sans interaction de l'utilisateur; cette application a besoin d'accéder à une base de données mysql à ses propres fins, alors comment puis-je le laisser se connecter? J'ai trouvé que même si par défaut un compte root est créé dans mysql, ce compte root n'a pas de connexion avec unix root, je peux l'utiliser même si je ne suis pas un superutilisateur sous Linux, et le mot de passe est vide. Bien sûr, je peux créer un compte utilisateur dédié dans mysql pour les besoins de mon application, mais dans ce cas, j'ai besoin de coder le mot de passe quelque part, ce qui n'est pas bien. Encore une fois - il n'y a aucune interaction de l'utilisateur dans mon application, donc aucune chance pour quelqu'un d'entrer le mot de passe. J'ai le sentiment distinct qu'il me manque quelque chose d'important ici. Merci pour tout conseil!Authentification intégrée pour mysql

Répondre

1

D'abord, vous devez vraiment définir un mot de passe sur le compte root mysql ...

Deuxièmement, oui, vous êtes à peu près devoir mettre le mot de passe quelque part, à moins que vous configurez le compte de l'application de utiliser un mot de passe vide trop ...

0

Vous pouvez mettre les paramètres dans un fichier .my.cnf:

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

Vous pouvez utiliser différents fichiers de configuration en utilisant l'option defaults fichier

Un peu plus d'informations sur les fichiers d'option à dev.mysql.com

+2

Désolé, mais vous n'avez pas compris. Je ne demande pas où stocker le mot de passe - je peux le faire dans le fichier de configuration pour ma propre application - mais je voudrais éviter cela. L'authentification intégrée à Windows signifie que les informations d'identification du système d'exploitation sont mappées aux informations d'identification de la base de données. – azerole

0

Vous pouvez coder en dur le mot de passe, ce qui, comme vous le dites, n'est pas particulièrement agréable. Par exemple. en PHP:

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

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

Sinon, vous pouvez charger le mot de passe d'un fichier de configuration, auquel cas vous pouvez le stocker sous forme cryptée, mais si quelqu'un peut voir votre code source et voir comment vous le déchiffrer, ils seront en mesure de le déchiffrer aussi.

Questions connexes