mysql的集成身份验证

时间:2008-11-28 11:52:22

标签: mysql database linux security

在Windows上使用MSSQL时,我习惯了一种称为集成身份验证的非常方便的功能。简而言之,在Windows中进行身份验证可以让您访问数据库,因此无需提供任何特定密码。现在我在Linux上开发一个没有用户交互的应用程序;这个应用程序需要为了自己的目的访问mysql数据库,所以如何让它登录?我发现即使默认情况下在mysql中创建了一个root帐户,这个root帐户也没有与unix root连接,即使我不是Linux中的超级用户,密码也是空白,我也可以使用它。当然我可以在mysql中创建一个专用的用户帐户来满足我的应用程序的需要,但在这种情况下我需要在某处硬编码密码,这不太好。再一次 - 我的应用程序中没有用户交互,因此没有人输入密码。我有一种明显的感觉,我在这里缺少一些重要的东西。谢谢你的建议!

4 个答案:

答案 0 :(得分:1)

首先,你真的应该在mysql root帐户上设置密码......

第二,是的,除非你将应用程序帐户设置为使用空白密码,否则你几乎必须将密码放在某处...

答案 1 :(得分:0)

您可以将设置放在.my.cnf文件中:

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

您可以使用--defaults-file选项

使用不同的配置文件

有关dev.mysql.com

选项文件的更多信息

答案 2 :(得分:0)

您可以对密码进行硬编码,正如您所说,密码并不是特别好。例如。用PHP:

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

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

或者,您可以从配置文件加载密码,在这种情况下,您可以以加密形式存储密码,但如果有人可以看到您的源代码并看到您如何解密它,他们将能够解密它也。

答案 3 :(得分:0)

前十年,现在您可以使用身份验证套接字登录:

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

然后您可以通过控制台直接登录而无需输入密码:

mysql -u user

不太确定在这种情况下您将如何处理其他应用程序的连接字符串,我仍然在寻找自己...

此方法仅适用于本地连接,不适用于TCP / IP连接。参见MySQL手册Chapter 11: Enabling Authentication