linux – 无需root密码即可通过命令行连接到MySQL

我正在为某些任务构建一个 Bash脚本.其中一项任务是在同一个bash脚本中创建一个 MySQL DB.我现在正在做的是创建两个变量:一个用于存储用户名,另一个用于存储密码.这是我脚本的相关部分:
MYSQL_USER=root
MYSQL_PASS=mypass_goes_here

touch /tmp/$PROY.sql && echo "CREATE DATABASE $DB_NAME;" > /tmp/script.sql
mysql --user=$MYSQL_USER --password="$MYSQL_PASS" < /tmp/script.sql
rm -rf /tmp/script.sql

但总是得到一个错误,说没有密码的用户root访问被拒绝,我做错了什么?我需要为PostgreSQL做同样的事情.

解决方法

对于MySQL和PostgreSQL,您都可以在本地配置文件中指定您的用户和密码. .my.cnf用于MySQL,.pgpass用于PostgreSQL.这些文件应该在您的主目录中(即〜/ .my.cnf).

.my.cnf:

[mysql]
user=user
password=password

.pgpass:

host:port:database:user:password

您可以在此处使用通配符条目,将任何字段替换为*******.

PS:请勿在命令行上指明密码!如果您的系统未配置为不显示属于其他用户的进程,则可以使用ps完全显示此信息.

@thinice:如果你想创建那些真正安全的文件,你应该这样做:

umask 077
touch .my.new.config
umask 022 # or whatever was your default

这样,文件将从一开始就使用安全权限创建,没有窃听者有机会获取密码.

无论如何,PostgreSQL将拒绝使用版权高于0600的文件.

相关文章

/etc/sysctl.conf这个目录主要是配置一些系统信息,/etc/sys...
1.作用 useradd或adduser命令用来建立用户帐号和创建用户的起...
它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅...
不管是我们在安装软件还是监测软件的使用性能,我们都要随时...
装好Tomcat7后,发现除了本机能访问外界访问不了,岂有此理。...
修改防火墙配置需要修改 /etc/sysconfig/iptables 这个文件,...