如何使用批处理脚本在mysql5.5中输入密码?

3

我已经编写了一个批处理脚本,但它仍然要求我输入密码。我想自动输入密码,请帮助我。

这是我的批处理脚本:

setlocal EnableDelayedExpansion
c:
cd "C:\Program Files\MySQL\MySQL Server 5.5\bin"

mysql -u root -p root

但是在输出中仍然会要求输入密码:

输入密码:

我找到了答案。请参见我的评论。

8个回答

6
选项和密码之间不能有空格。所以应该这样写:mysql -u root -proot或者使用--password=root

不,它报错1045。在MySQL5.5中,-p和root之间有一个空格。因此,我的查询还没有解决 :( - Pratik Gujarathi
http://dev.mysql.com/doc/refman/5.5/en/mysql-command-options.html#option_mysql_password 表明您需要一个空格。1045表示访问被拒绝。您确定使用的是正确的用户名/密码吗? - ChrisPatrick
1
嘿,我找到了解决方案。我只需将用户名和密码添加到mysql exe文件的属性中。在“目标”文本框中,我写下了这一行:“C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql.exe”“--defaults-file=C:\Program Files\MySQL\MySQL Server 5.5\my.ini”“-uroot”“-proot!” - Pratik Gujarathi

4

对于像我一样的其他谷歌用户,我会分享我的解决方案。 不幸的是,官方文档没有清晰地说明这一点。

像这样的短参数对我不起作用,并提示输入密码。

mysqldump -uroot -p "qwerty" mybase > Z:\mybase.sql

使用“full”名称参数,它可以正常工作,但需要警告此操作不安全。
mysqldump  --user="root" --password="qwerty" mybase > Z:\mybase.sql

echo 'Backup OK' > mysql_dump.log

1

问题已解决,找到了解决方案

c:

cd "C:\Program Files\MySQL\MySQL Server 5.5\bin"

mysql -uroot -proot -e "delete from db.tablename where columnname = 'something';

问题出在这一行 "setlocal EnableDelayedExpansion",应该删除它,代码就可以顺利运行啦 :)


0

你最好的选择是使用MySQL选项文件。

MySQL 5.5使用.my.cnf文件,你只需要提供你的用户名和密码。这种方法意味着你可以通过在你的脚本中输入mysql来登录mysql,而.my.cnf文件将填写剩下的部分;以下是具体步骤:

在运行脚本的用户的主目录中创建一个.my.cnf文件。该文件的内容应该类似于以下代码块,将your_useryour_password替换为实际的值。

[client]
user=your_user
password=your_password   

将此文件的权限更改为400或600是明智的,这意味着只有您的用户和root用户才能查看该文件。

chmod 600 .my.cnf

一切准备就绪!

注意

从5.6版本开始,您可以使用mysql_config_editor实用程序生成.mylogin.cnf文件,它具有与上述方法相同的结果,并带有密码将由实用程序加密的附加好处。

链接

MySQL 5.5 https://dev.mysql.com/doc/refman/5.5/en/password-security-user.html

MySQL 5.6+ https://dev.mysql.com/doc/refman/8.0/en/mysql-config-editor.html


0
这对我有用,将其放入.bat文件中,并使用您自己的密码更改它。
@echo OFF
setlocal EnableDelayedExpansion
C:
cd "C:\xampp\mysql\bin\"
mysql.exe  --user="root" --password="the password" 

0

-ppassword 显示警告

警告:在命令行界面上使用密码可能不安全。

https://dev.mysql.com/doc/refman/5.7/en/password-security-user.html

解决方案:您可以使用cnf选项文件

https://dev.mysql.com/doc/refman/5.7/en/option-files.html

Linux:

echo -e "[client]\nhost=mysqlhost\nport=3306\nuser=root\npassword=${ROOT_PASS}" > root.cnf
mysql --defauls-file=root.cnf -e "SELECT * FROM users;" ${MYDB}

Windows:

将 root.cnf 文件与批处理脚本一起打包并运行

"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql" --defauls-file=root.cnf -e "SELECT * FROM users;" %MYDB%

0

我没有访问mysqladmin的权限。那么还有其他方法吗? - Pratik Gujarathi

0

尝试创建一个名为 password .pw 的文件,并在批处理中使用以下命令运行。mysql --default-file=C:\path*.pw -u %username% 等等...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接