当我try 从终端内部在MySQL上运行以下命令时:

mysql -u $user -p$password -e "statement"

执行按预期进行,但始终会发出警告:

Warning: Using a password on the command line interface can be insecure.

然而,我必须使用一个存储密码的环境变量($password)来执行上面的语句,因为我想在终端中用bash脚本迭代地运行命令,而且我绝对不喜欢等待提示出现,然后强迫我在一个脚本中输入密码50或$password次.所以我的问题是:

  • suppress 警告是否可行?正如我所说,这个命令工作正常,但当我循环运行50或100次命令时,窗口变得非常混乱.

  • 我应该遵守警告信息,不要在脚本中写入密码吗?如果是这样的话,那么每次提示迫使我输入密码时,我是否必须输入密码?

man mysql也没用,只是说说而已

--show-warnings

并且没有提到如何关闭功能,如果我没有遗漏什么的话.

我使用OS X 10.9.1 Mavericks,使用brew 的MySQL 5.6.

推荐答案

如果你的MySQL客户端/服务器版本是5.6.避免警告信息的一种方法是使用100工具:

mysql_config_editor set --login-path=local --host=localhost --user=username --password

然后可以在shell脚本中使用:

mysql --login-path=local  -e "statement"

而不是:

mysql -u username -p pass -e "statement"

Mysql相关问答推荐

为什么双破折号(--)会导致此MariaDB条款的计算结果为True?

更新MySQL表中子记录的序号

表列中的SQL SUM MENY值记录单个查询

根据日期重叠转换表格

警告:MYSQL_OPT_RECONNECT 已弃用

发生的原因及解决方法

获取每个参数的记录,不重复

如果存在N个特殊行,如何 Select 它们,其余的必须填充常规行,总行数不能超过MySQL中的X行?

替代对多个表执行 FULL OUTER JOIN?

关联同一个表中的两列

MySQL - 考虑到所有前几天,每天计算唯一用户

进行 MySQL COUNT 查询

Select 多列但仅按 1 列分组

mysql - 如何加入表中的动态列

如何使用 laravel 连接 mysql?

如何使用 phpmyadmin 复制数据库?

mysqli_fetch_array() 期望参数 1 为 mysqli_result,布尔值

用户 'User'@'%' 和 'User'@'localhost' 不一样吗?

我可以在单个 Amazon RDS 实例上创建多少个数据库

更改 Laravel 的 created_at 和 updated_at 的名称