在Windows上使用MSSQL时,我习惯了一种称为集成身份验证的非常方便的功能。简而言之,在Windows中进行身份验证可以让您访问数据库,因此无需提供任何特定密码。现在我在Linux上开发一个没有用户交互的应用程序;这个应用程序需要为了自己的目的访问mysql数据库,所以如何让它登录?我发现即使默认情况下在mysql中创建了一个root帐户,这个root帐户也没有与unix root连接,即使我不是Linux中的超级用户,密码也是空白,我也可以使用它。当然我可以在mysql中创建一个专用的用户帐户来满足我的应用程序的需要,但在这种情况下我需要在某处硬编码密码,这不太好。再一次 - 我的应用程序中没有用户交互,因此没有人输入密码。我有一种明显的感觉,我在这里缺少一些重要的东西。谢谢你的建议!
答案 0 :(得分:1)
首先,你真的应该在mysql root帐户上设置密码......
第二,是的,除非你将应用程序帐户设置为使用空白密码,否则你几乎必须将密码放在某处...
答案 1 :(得分:0)
您可以将设置放在.my.cnf文件中:
[Client]
user=ken
password=ken
host=localhost
database=foo
您可以使用--defaults-file选项
使用不同的配置文件 选项文件的更多信息答案 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。