我想在没有密码交互的情况下连接到mysql数据库(我需要在一个批处理脚本中使用它)。我正在使用这个脚本,但在开始连接之前,我必须插入密码。
mysql -u username@databasename -p "Password" -h hostnamedatabase -P 3344
我已经尝试了其他的方法,但我没有成功。
mysql -u username@databasename -pPassword -h hostnamedatabase -P 3344
有没有一种方法可以不用输入密码直接输入?
OP是在远程服务器的命令行上(使用SSH)。从那里。mysql
需要使用无密码 - 可以说 - 在 INSTANCE1 和 INSTANCE2 上创建用户。
这也是可行的。你可以使用 --defaults-group-suffix
开关。
~.my.cnf
让我们从在你的主目录中创建一个名为.my.cnf的文件开始(也就是~.my.cnf)。把这个放在里面。
[client1]
user=INSTANCE1-USERNAME
password=INSTANCE1-PASSWORD
database=INSTANCE1-DATABASE (this could be mysql)
host=INSTANCE1-HOSTNAME-OR-IP
[client2]
user=INSTANCE2-USERNAME
password=INSTANCE2-PASSWORD
database=INSTANCE2-DATABASE (this could be mysql)
host=INSTANCE2-HOSTNAME-OR-IP
保存文件。做 chmod 600 ~/.my.cnf
以确保只有你的用户名和类似rootroot的用户能看到它。
现在,输入这个来进入第一个服务器。
mysql --defaults-group-suffix=1
然后,用这个进入第二个服务器。
mysql --defaults-group-suffix=2
解释
通常~.my.cnf会有以下的代码块
[client]
user=USERNAME
password=PASSWORD
database=DATABASE (this could be mysql)
host=localhost (or whatever hostname/IP)
这样你就可以直接输入 mysql
并登录。MySQL寻找凭证、主机、端口等,在 ~/.my.cnf
. 如果它得到这些信息,它会用它来登录MySQL。酷啊 很简单。
--defaults-group-suffix=2
告诉MySQL查询 ~/.my.cnf
不看 [client]
块,而改为 [client2]
块的凭证信息。
同样 --defaults-group-suffix=1
告诉MySQL去寻找 ~/.my.cnf
并阅读 [client1]
块中的凭证信息。
这样一来,你就可以在一个服务器中拥有多个服务器或数据库的凭证,并登录MySQL,而不必通过命令行提示提供凭证。
只要~.my.cnf文件在运行这些脚本的用户名中,你就可以用这个工具来使用脚本。
文档介绍
--login-path
请看 https:/dev.mysql.comdocrefman8.0enmysql-config-editor.html。. 它显示你可以登录到mysql使用 --login-path
开关。因为上面的方法对你来说很管用,所以我只是补充一下作为参考。
实际上你可以这样做。假设你是在Linux上,创建一个 .my.cnf
文件在你的主目录下。在里面输入这个。
[client]
user=username
password=yourpass
然后,你可以做 mysql -h host -P 3344 -D databasename
参见这里的文档。https:/dev.mysql.comdocrefman8.0enoption-files.html。
同时要确保这个文件得到充分的保护(做 chmod 600 ~/.my.cnf
).