如何解决如何创建没有密码的MySQL用户-远程登录所需-在bash插入脚本中使用?
| 我的要求是创建一个用于远程登录但没有密码的用户。在我的远程空间,我使用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
问题是每个插入都要花费将近4秒钟,我无法将问题仅定位到每个插入处的身份验证。因此,如果我可以在MySQL中以最少的身份验证创建用户...类似以下内容:
# I\'m trying to remove this password
GRANT ALL PRIVILEGES TO \'user\'@\'%\' IDENTIFIED BY \'password\';
...您可以提出的任何建议。
解决方法
您可以通过使用密码创建用户,然后将.my.cnf文件放置在运行包含以下内容的bash脚本的帐户的主目录中来进行此操作:
[mysql]
user=user
password=pass
[mysqladmin]
user=user
password=pass
这可能比创建没有密码的用户更好。
,只需删除IDENTIFIED BY
部分:
GRANT ALL PRIVILEGES ON *.* TO \'user\'@\'%\'
请注意,无需密码即可从任何地方进行远程登录都是非常不安全的事情。您最好限制此用户允许的IP
范围:
GRANT ALL PRIVILEGES ON *.* TO \'user\'@\'allowed_remote_machine\'
,没有密码和所有特权的用户并不是一个好主意。我建议您创建一个没有密码但仅具有一些特权的用户(插入特定表或特定数据库)。
,我认为您的问题在于您正在为每个插入启动mysql客户端。您应该从php,java等程序进行插入-而不是从shell脚本进行插入。
客户端的启动时间(以及与主机的连接)使您丧命。我通常每分钟从php或java程序到MySQL数据库(在小型(CPU /内存)计算机上具有数百万条记录)进行1000次插入。
,首先,在运行脚本的远程计算机上使用客户端cnf文件不会加快此过程。 MySQL客户端仍在发送登录信息并为每个插入登录,它只是读取uid / pw的文件,而不是使用cmd行参数。 AFAIK网络和身份验证开销相同。甚至网络数据包内容也将相同。
您仍应使用cnf文件。
改善性能的方法是制作多行linsert:
MySQL-默认文件= / some / uid / pw / etc / .client.cnf -e \\
\“插入
tbl_name
(\'fld1 \',\'fld2 \')
价值观
(\'r1-fld1 \',\'r1-fld2 \'),
(\'r2-fld2 \',\'r2-fld2 \'),
...依此类推(最大为max_allowed_packet_size)
(\'r500-fld2 \',\'r500-fld2 \'); \“
或在通过数据文件运送后在服务器端读取DATA INFILE
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。