2

当我在我的 shellscript 中使用以下命令来使用 mysql 时,

mysql -uUserName -pPassWord DBName

我收到以下警告

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

我的 shellscript 正在循环运行此命令以在我的表中插入一些数据,因此它在屏幕上连续发出警告,这使得输出完全笨拙,所以我应该怎么做才能停止从 mysql 打印此警告

4

3 回答 3

4

如果您的 MySQL 客户端/服务器版本是 5.6.xa 避免警告消息的方法,则使用mysql_config_editor工具:

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

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

mysql --login-path=local DBName

代替:

mysql -uUserName -pPassWord DBName

于 2013-12-31T07:57:44.283 回答
2

您可以将mysql连接信息放入 中~/.my.cnf,如下所示:

[client]
database=dbsite
user=dbuser
password=dbpass
host=dbhost

然后你可以mysql不带任何参数调用,它将获取用户名、密码和所有其他详细信息~/.my.cnf

但是,对此文件使用严格的权限:

chmod 0600 ~/.my.cnf

如果你不想污染你的~/.my.cnf文件,你可以在其他地方创建一个文件,例如/path/to/my.cnf.dbname,然后mysql像这样调用:

mysql --defaults-file=/path/to/my.cnf.dbname

再次确保为此文件设置严格的权限:

chmod 0600 /path/to/my.cnf.dbname

更新

一个常见的陷阱是设置host不正确。此设置必须与mysql.user用户表中的设置相匹配。您可以通过以数据库管理员身份运行此查询来确认您的用户帐户:

select Host, User from mysql.user;

或者,您可以找到服务器配置文件中使用的主机名,例如:

grep -r host /etc/mysql

但是,正确的路径取决于您的系统。(这是来自标准的 Debian 安装。)

于 2013-11-11T06:50:53.983 回答
-1
mysql -u <UserName> -p <PassWord> then press enter.

Note: if a password set then only provide the password otherwise leave it blank.

And then run a command "mysql> use <databasename>;
于 2013-11-11T08:00:36.170 回答