0%

Bash/Shell调用MySQL并忽略警告

Shell对MySQL的调用与脚本中如何写

Shell脚本如何搞定 MySQL的增删改查

用Shell对mysql操作非常的简单
我们利用 mysql 命令去操作数据库里面的所有东西。

  • shell脚本
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

    # 一坨一坨的运行:
    mysql -uroot -p123456 -e "
    select * from tmp_test where tmp_name = 'a';
    select * from tmp_test where tmp_name = 'b';
    select * from tmp_test where tmp_id = 1;
    select tmp_name from tmp_test where tmp_id = 2;
    quit
    "

    # 赋值:
    id=$(mysql -uroot -p123456 -e "SELECT tmp_id from tmp_test WHERE tmp_name = 'a';")
    # 会发现还有字段名字,加参数去掉字段名,只保留我们要查询的:
    id=$(mysql -uroot -p123456 -Bse "SELECT tmp_id from tmp_test WHERE tmp_name = 'a';")

    过后我们会发现每次查询之后会出现警告,每次都出:
    1
    mysql: [Warning] Using a password on the command line interface can be insecure.

MySQL 版本 5.6+ 的安全策略

MySQL5.6版本向上有一个密码安全问题,即在命令行输入密码会出现警告:

1
2
3
mysql -uroot -proot  
mysql: [Warning] Using a password on the command line interface can be insecure.

读取配置文件的参数也不可以,这样我们 需要指定一个mysql的配置文件作为mysql的配置输入进去:

cnf配置文件
my.cnf

1
2
3
4
#!/bin/bash
[mysql]
password=root

然后再在脚本中调用:

1
2
3
#!/bin/bash
# 继续赋值,这样就不会出现警告信息:
id=$(mysql --defaults-file=./my.cnf -uroot -Bse "SELECT tmp_id from tmp_test WHERE tmp_name = 'a';")