2011-04-27 79 views
14

我的要求是创建远程登录,但没有密码的用户。在我的远程空间我使用bash脚本来执行插入,这是一样的东西:如何创建一个没有密码的MySQL用户 - 远程登录需要 - 用在bash插入脚本中?

for i in {1..5000}; do 
    mysql -h 11.40.3.169 -uUser -pPass -DDatabaseName <<< 
    "insert into DatabaseTableName values('$i','dummy_$i');" & 
    echo -n "$i " 
    sleep 1 
    date 
done 

的问题是,每个插入正在采取近40秒,我不能查明问题到什么,但认证在每插。所以,如果我能在MySQL中建立一个用户用最少的认证参与......是这样的:

# I'm trying to remove this password 
GRANT ALL PRIVILEGES TO 'user'@'%' IDENTIFIED BY 'password'; 

...任何你可以建议。

回答

21

您可以通过创建具有密码的用户,然后将一个.my.cnf文件中的帐户的主目录,其运行bash脚本做到这一点包含以下内容:

[mysql] 
user=user 
password=pass 
[mysqladmin] 
user=user 
password=pass 

这可能是比创建一个没有密码的用户更好的。

+0

非常感谢cbz的快速回复,我在网上阅读了一些类似的东西,但感冒并没有发现它......我需要保持这种状态? (对不起,如果我听起来哑巴)..好心帮助。 – Chirayu 2011-04-27 14:54:28

+0

在属于将运行bash脚本的用户的主目录中 - 在这种情况下,可能是您的'远程空间' – cbz 2011-04-27 14:55:13

+0

您的意思是说,从远程机器中,我以“SomeUser”身份登录,然后运行bash脚本,在我以“SomeUser”身份登录远程机器后,应该回到主目录并保存my.cnf文件,该文件仅包含答案中提供的信息。 – Chirayu 2011-04-27 15:00:38

20

只需卸下IDENTIFIED BY部分:

GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' 

注意,从任何地方远程登录无需密码是一个非常不安全的事情。你最好限制在允许的范围内IP该用户:

GRANT ALL PRIVILEGES ON *.* TO 'user'@'allowed_remote_machine' 
+2

感谢快速回复Quassnoi,但你所说的2个命令给了错误,是不允许的,至少在MySQL 5.1 [ERROR 1133(42000):找不到任何匹配的行中的user表] ..我有试过他们之前,并在阅读你的答案后再次尝试他们......请帮助我解决这个问题..并感谢不安全的问题的建议。 – Chirayu 2011-04-27 14:52:34

+0

@Chirayu:你开启了'NO_AUTO_CREATE_USER'。首先发出'CREATE USER'用户'''allowed_remote_machine'。另外,请注意@ cbz的建议:这是你可能想要的,而不是创建一个没有密码的用户。 – Quassnoi 2011-04-27 14:57:57

+0

好..你的想法工作..感谢很多..但我的整个想法,以尽可能快地减少在bash脚本中发生远程插入发生仍然失败....因为它仍然需要将近4秒做1插入。 ..关于这个明智的话?!,cbz的答案会有帮助吗? – Chirayu 2011-04-27 15:41:03

1

这不是那么好主意,有没有密码和所有权限的用户。我建议你创建一个没有密码的用户,但只是有一些权限(插入到特定的表或特定的数据库)。

+0

我准备好按照你的建议去做,但是路障是我无法在任何情况下创建一个没有密码的用户。阅读其他答案中的评论以了解更多......如果可能,请提供帮助。 – Chirayu 2011-04-27 14:56:13

+0

我认为最好的解决方案是由cbz提出的。只需将您的用户和密码添加到您的选项文件。 – PachinSV 2011-04-27 15:35:48

+0

对于我缺乏Linux知识表示歉意。但是我应该在哪里保存my.cnf文件,如@cbz ??所示,我通过ssh客户端(putty)远程登录到Linux服务器,使用用户名和密码我在该服务器上... – Chirayu 2011-04-27 15:59:04

1

我觉得你的问题在于你开始为每个插入MySQL客户端的事实。你应该从php,java等程序中进行插入 - 而不是从shell脚本中进行插入。

客户端(和连接到主机)的启动时间是杀了你。我经常从PHP或Java程序每分钟执行1000次插入到MySQL数据库,在小型(CPU /内存)机器上有数百万条记录。

相关问题