代码之家  ›  专栏  ›  技术社区  ›  user181548

“mysql”如何要求密码?

  •  4
  • user181548  · 技术社区  · 15 年前

    如果我运行类似mysql的命令行程序

     mysql -u someone -p < sql-file
    

    所以需要密码( -p ,提示输入密码:

     Enter password:
    

    但是,从上面可以看到,标准输入实际上是一个文件, sql-file .

    “mysql”(或类似程序)是如何做到这一点的?

    (请注意,这不是关于MySQL的问题,特别是我对C程序如何访问这样的终端感兴趣。)

    3 回复  |  直到 15 年前
        1
  •  4
  •   Oliver Charlesworth    15 年前

    正常开放 /dev/tty 作为一个处于读取模式的文件,然后从中读取。

        2
  •  2
  •   casablanca    15 年前

    密码通常直接从终端读取。实际上,有一个函数 getpass 就是这样。

        3
  •  0
  •   jhourback    15 年前

    当你在一个文件中输入管道时,它会出现在stdin上。读取密码的应用程序通常会打开一个单独的输入流。

    实现目标的最佳方法是 Expect .

    #!/usr/bin/expect -f
    spawn mysql
    expect "*password*"
    send "your_password_here"
    
    推荐文章