我有一个shell脚本,它使用外部文件中的一个参数调用mysql命令,它看起来像这样(我也在其他资源中看到了这个例子):
mysql --user=root --password=`cat /root/.mysql`
Run Code Online (Sandbox Code Playgroud)
它不起作用:
无法连接到MySQL服务器:用户'root'@'localhost'拒绝访问(使用密码:YES).
我尝试了不同的引号而没有成功.怎么通过呢?
更新1:发现我可以在没有空格符号的情况下传递密码.在这个问题中,我的根传递包含空格.
Tho*_*ner 12
将密码存储在受保护的mysql cnf文件中:
install -m 700 -d /srv/secrets/
install -m 600 /dev/null /srv/secrets/root@localhost.cnf
editor /srv/secrets/root@localhost.cnf
Run Code Online (Sandbox Code Playgroud)
将密码存储在client.password ini属性中
[client]
password="password"
Run Code Online (Sandbox Code Playgroud)
将此文件包含在mysql命令的第一个参数中:
mysql \
--defaults-extra-file=/srv/secrets/root@localhost.cnf \
--user=root \
--host=localhost \
--no-auto-rehash
Run Code Online (Sandbox Code Playgroud)
小智 10
使用mysql_config_editor安装了与MySQL客户端
mysql_config_editor set --login-path=dev --user=dbuser --host=localhost -p
Run Code Online (Sandbox Code Playgroud)
输入密码然后就可以这样登录了
mysql --login-path=dev
Run Code Online (Sandbox Code Playgroud)
最后这行工作:
mysql --user=root --password="$(cat /root/.mysql)"
Run Code Online (Sandbox Code Playgroud)
要么:
mysql --user=root --password="$(< /root/.mysql)"
Run Code Online (Sandbox Code Playgroud)
root密码必须没有引号: bla bla bla
如果您的密码不包含空格,您可以使用:
mysql --user=root --password=`cat /root/.mysql`
Run Code Online (Sandbox Code Playgroud)
您应该mysql_config_editor为此使用。
$ mysql_config_editor set \
--login-path=name_of_connection \
--host=server.example.com \
--user=login_as_user \
--password
Run Code Online (Sandbox Code Playgroud)
这将提示输入密码,并保存到您的 homedir 中的 .mylogin.cnf 文件中。
mysql --login-path=name_of_connection dbname将连接到dbname上server.example.com作为login_as_user
如果--login-path与其他选项一起使用,例如。--silent,--login-path 必须是第一个参数/选项