当我在我的shellcript中使用以下命令来使用mysql时,
mysql -uUserName -pPassWord DBName
我收到以下警告
Warning: Using a password on the command line interface can be insecure.
我的shellcript在循环中运行此命令以在我的表中插入一些数据,因此它在屏幕上连续发出警告,这使得输出完全笨拙,所以我该怎么做才能停止从mysql打印此警告
答案 0 :(得分:4)
如果您的MySQL客户端/服务器版本是5.6.x,则可以使用 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
答案 1 :(得分: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安装。)
答案 2 :(得分:-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>;