我正在准备一个自动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]#
答案 0 :(得分: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