1

我正在准备一个自动化的 shell 脚本,但在 shell 脚本中运行的 MySQL 命令有一个警告:在命令行界面上使用密码可能是不安全的,并且 .sock 错误。请帮助我...我的代码是:

user="root"
password="7layer"
db="mysql"
mysql -u "$user" -p"$password"  <<EOF
  use $db;
mysqld_safe --skip-grant-tables
update user set Password=PASSWORD('7layer') where user='root';
UPDATE mysql.user SET password_expired='N' WHERE User='root';
FLUSH PRIVILEGES;
exit;
EOF

输出是:

Starting MySQL.                                            [  OK  ]
Shutting down MySQL..                                      [  OK  ]
Warning: Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
[root@autoinstallapi AutoInstall]#
4

1 回答 1

0

编辑您的用户~/.my.cnf文件并添加

[mysql]
user=root
password=7layer

保护文件:

chmod 600 ~/.my.cnf

那么您可能需要重新启动 mysqld ( /etc/init.d/mysqld restart),但可以使用:

mysql <<EOF
use $db;
mysqld_safe --skip-grant-tables
###your sql queries###
exit;
EOF

没有密码

更新:

这不绑定到您的单个脚本,它绑定到用户。如果这很关键,请为脚本设置一个新用户,该用户无需从命令行输入密码即可访问 mysql。

更新:

正如您在问题中看到的,Shutting down MySQL..您的 MySQL 服务器没有运行。查看日志为什么它会中止。其中之一应包含更多信息:

/var/log/mysql.err
/var/log/mysql.log
/var/log/mysql/mysql.log
/var/log/mysql/mysql.err
于 2013-07-02T11:11:32.663 回答