Rey*_*rPM 12 mysql postgresql linux bash shell-scripting
我正在为某些任务构建 Bash 脚本。其中一项任务是从同一个 bash 脚本中创建一个 MySQL 数据库。我现在正在做的是创建两个变量:一个用于存储用户名,另一个用于存储密码。这是我的脚本的相关部分:
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
Run Code Online (Sandbox Code Playgroud)
但是总是收到一个错误,说没有密码的用户 root 访问被拒绝,我做错了什么?我需要为 PostgreSQL 做同样的事情。
kwo*_*orr 26
对于 MySQL 和 PostgreSQL,您都可以在本地配置文件中指定您的用户名和密码。.my.cnf 用于 MySQL,.pgpass 用于 PostgreSQL。这些文件应该在您的主目录中(即 ~/.my.cnf)。
.my.cnf:
[mysql]
user=user
password=password
Run Code Online (Sandbox Code Playgroud)
.pgpass:
host:port:database:user:password
Run Code Online (Sandbox Code Playgroud)
您可以在此处使用通配符条目,用任何字段替换 *******。
PS:永远不要在命令行指定密码!如果您的系统没有配置为不显示属于其他用户的进程,这可以通过ps完全可见。
@thinice:如果你想创建真正安全的文件,你应该这样做:
umask 077
touch .my.new.config
umask 022 # or whatever was your default
Run Code Online (Sandbox Code Playgroud)
这样,文件从一开始就以安全权限创建,没有窃听者有机会窃取您的密码。
无论如何,PostgreSQL 将拒绝使用权限高于 0600 的文件。
| 归档时间: |
|
| 查看次数: |
30032 次 |
| 最近记录: |