• ベストアンサー
  • すぐに回答を!

対話形式処理のスクリプト化

例えば次のような処理をスクリプトやマクロで行いたいのですが可能でしょうか? (シェル言語はbash,zshなどを想定しておりますが他の言語を想定したご回答でも参考になります) ちなみに対話途中で表示される出力結果はあってもなくても構いませんが 出力結果を表示させないようなやり方から理解したいと考えております。 # mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 10 to server version: 4.1.12 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> select user,host,password from ysql.user; +------+----------------------+----------+ | user | host | password | +------+----------------------+----------+ | root | localhost | | | root | centos.centossrv.com | | | | localhost | | | | centos.centossrv.com | | +------+----------------------+----------+ 4 rows in set (0.00 sec) mysql> set password for root@localhost=password('rootパスワード'); Query OK, 0 rows affected (0.00 sec) mysql> set password for root@'centos.centossrv.com'=password('rootパスワード'); Query OK, 0 rows affected (0.00 sec) mysql> select user,host,password from mysql.user; +------+----------------------+------------------+ | user | host | password | +------+----------------------+------------------+ | root | localhost | **************** | | root | centos.centossrv.com | **************** | | | localhost | | | | centos.centossrv.com | | +------+----------------------+------------------+ 4 rows in set (0.00 sec) mysql> exit Bye

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数307
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.2

対話形式の処理にはExpectが便利です。 当然mysql以外の処理にも利用可能です。 以下のURLをご参考に。 http://www.itbook.info/study/p107.html

参考URL:
http://www.itbook.info/study/p107.html

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうこざいます。 参考URLも拝見させていただいて、Expectは大変参考になりそうです。 ぜひ、活用したいと思います。

その他の回答 (1)

  • 回答No.1

mysql database < script.sql > output.tab だそうですが。。。

参考URL:
http://dev.mysql.com/doc/refman/4.1/ja/mysql.html

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 これはSQLの実行しか対応していないのでしょうか? 私の本音はmysqlの場合のみならず、一汎的に対話形式をスクリプトかできることを望んでいますが、 ですが、これだけでも有用だと思うのでよく理解していきたいと思います。

関連するQ&A

  • パスワードが設定できない。。

    http://centossrv.com/mysql.shtml で【set password for root@localhost=password('rootパスワード');】 を設定してmysqlをexitして 【mysql -u root -prootパスワード】 で再度ログインするとなぜかログインできなくなります。(パスワード メモ帳にコピペしているので問題ないと思います。) なぜでしょうか? Centos4.3 mysql-4.1.20-2.RHEL4.1 mysql-server-4.1.20-2.RHEL4.1 です。こころあたりのある方、アドバイスお願いします。

  • 権限付与(変更)ができないです・・・・。

    CentOS5.2, MySQL version: 5.0.45 を使用しています。 現状のユーザ権限は次のようになっています。 mysql> use mysql Database changed mysql> select host, user, select_priv, insert_priv, update_priv, delete_priv from user; +-----------+---------+-------------+-------------+-------------+-------------+ | host | user | select_priv | insert_priv | update_priv | delete_priv | +-----------+---------+-------------+-------------+-------------+-------------+ | localhost | root | Y | Y | Y | Y | | abcd | taro | N | N | N | N | +-----------+---------+-------------+-------------+-------------+-------------+ これを スーパーユーザで入り、 mysql> grant all privileges on DB.* to 'taro'@'abcd' identified by 'password' with grant option; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) として終了し、クライアントから接続しなおしましたが、taroの権限が Y になりません。 どうすれば Y にすることができるでしょうか?

    • ベストアンサー
    • MySQL
  • 助けてください。Xampp MySQLへログインできなくなってしまいました。

    お世話になります。 XampでMySQLを扱おうと悪戦苦闘中です。 サイト http://homepage1.nifty.com/gak/webdb/mysql.html と、 書籍 PHPによるWebアプリケーションスーパーサンプル第2版 p.740 を参考にしながら行いました。 最初 c:\zampp\mysql\bin>mysql -u root で、mysqlへ入れました。 そして、パスワードを設定しました。 mysql> use mysql Database changed 次にrootユーザーパスワードの設定をしました。 mysql> update mysql.user set password='****' where user='root'; Query OK, 1 row affected (0.03 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> 次に、mysqladminでもパスワードの設定ができるということが記載されていたので、一端MySQLをExitして、試してみました。 C:\xampp\mysql\bin>mysqladmin -u root password '**' mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: NO)' と、いう結果でした。 どうも受け付けられなかったようです。 そして、再度MySQLへ入ろうと C:\xampp\mysql\bin>mysql -u root -p Enter password:****** ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwordO) となってログインできなくなってしまいました。 Enter password: で、先ほど設定したパスワードを入力しています。 MySQLのパスワードを忘れた場合は、という記載もありまして、 「--skip-grant-tables オプションを指定してmysqldを起動」 と、いうことでしたので以下のように実行してみましたが、やはりダメでした。 C:\xampp\mysql\bin>mysqld --skip-grant-tables C:\xampp\mysql\bin>mysql -u root ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password O) もう、お手上げです。 おわかりになる方見えましたら、なにとぞよろしくお願いします。 コマンド出力は記録をとりながら行っていたので、こうして記載もできました。

    • ベストアンサー
    • MySQL
  • mysqlのユーザパスワードについて

    mysqlのユーザパスワードについて こんばんわ。mysql初心者です。 現在、サーバ(Linux Fedora11)でyumコマンドからmysql(Server version: 5.1.45 Source distribution) をダウンロードしてインストールしています。 新しいユーザーを作って接続を試みたのですが出来ません。 原因を調査した結果、パスワードが設定出来ていないようです。 一連の作業を例として下記の通りです。 例)------------------------------------------------------------------------------- [root@fedora user]# mysql -u root mysql> grant all privileges on *.* to user@"%" identified by 'user' with grant option; mysql> grant all privileges on *.* to user@localhost identified by 'user' with grant option; mysql> select user,host,password from mysql.user; +----+-----------------+-----------------+ | user | host           | password        | +----+-----------------+-----------------+ | root | localhost        |             | | root | fedora.fedorasrv.com |             | | root | 127.0.0.1        |             | | user | localhost        | 1a486e7929011a28 | | user | #             | 1a486e7929011a28 | +----+-----------------+-----------------+ mysql> exit; [root@fedora user]# mysql -u user -p 1a486e7929011a28 Enter password: ERROR 1045 (28000): Access denied for user 'user'@'localhost' (using password: NO) [root@fedora user]# mysql -u user ERROR 1045 (28000): Access denied for user 'user'@'localhost' (using password: NO) [root@fedora user]# mysql -u user -p user Enter password: ERROR 1045 (28000): Access denied for user 'user'@'localhost' (using password: NO) ---------------------------------------------------------------------------------- userユーザのパスワードが保護(?)なのか設定した内容と違います。 保護されたパスワードで打ってもノーパスワードで打っても設定したパスワードでも接続出来ません。 ちなみに他のユーザで作成しても保護されたパスワードです。 どのようにしたら設定した通りのパスワードが作成されるかご教授願います。

    • ベストアンサー
    • MySQL
  • mysqlのユーザパスワードについて

    mysqlのユーザパスワードについて こんばんわ。mysql初心者です。 現在、サーバ(Linux Fedora11)でyumコマンドからmysql(Server version: 5.1.45 Source distribution)をダウンロードしてインストールしています。 新しいユーザーを作って接続を試みたのですが出来ません。 原因を調査した結果、パスワードが設定出来ていないようです。 一連の作業を例として下記の通りです。 例)------------------------------------------------------------------------------- [root@fedora user]# mysql -u root mysql> grant all privileges on *.* to user@"%" identified by 'user' with grant option; mysql> grant all privileges on *.* to user@localhost identified by 'user' with grant option; mysql> select user,host,password from mysql.user; +----+-----------------+-----------------+ | user | host           | password        | +----+-----------------+-----------------+ | root | localhost        |             | | root | fedora.fedorasrv.com |             | | root | 127.0.0.1        |             | | user | localhost        | 1a486e7929011a28 | | user | #             | 1a486e7929011a28 | +----+-----------------+-----------------+ mysql> exit; [root@fedora user]# mysql -u user -p 1a486e7929011a28 Enter password: ERROR 1045 (28000): Access denied for user 'user'@'localhost' (using password: NO) [root@fedora user]# mysql -u user ERROR 1045 (28000): Access denied for user 'user'@'localhost' (using password: NO) [root@fedora user]# mysql -u user -p user Enter password: ERROR 1045 (28000): Access denied for user 'user'@'localhost' (using password: NO) ---------------------------------------------------------------------------------- userユーザのパスワードが保護(?)なのか設定した内容と違います。 保護されたパスワードで打ってもノーパスワードで打っても設定したパスワードでも接続出来ません。 ちなみに他のユーザで作成しても保護されたパスワードです。 どのようにしたら設定した通りのパスワードが作成されるかご教授願います。

    • ベストアンサー
    • MySQL
  • MySQLセキュリティ対策

    皆さんこんにちわ。 この度、MySQL5系をインストールしたばかりの超初心者です。 自宅サーバ用途にて、MySQLを使用予定です。 MySQLを利用するにあたり、 MySQLをきっかけにして、 クラッキングなど部外者から攻撃をされないよう、 いくつかセキュリティの対策を行いたいと思っています。 手始めに、 ユーザ名無しでログインできないように設定を行ったのですが、 その他にも行うべきセキュリティー対策などありましたら、 教えていただけるとありがたいです。 現在、rootの他にもう1アカウントを作成しています。 (例として「MIKE」としてます。想像の安易なユーザ名にはしていません) mysql> select user,host from mysql.user; +--------+--------------+ | user | host | +--------+--------------+ | root | % | | root | 127.0.0.1 | | root | ホスト名 | | root | localhost | | MIKE  | localhost | +--------+--------------+ 5 rows in set (0.00 sec) MySQLをきっかけとして、 部外者から攻撃が始まらないようセキュリティ対策方法、 もしくは、参考になるページを教えていただけると大変ありがたいです。 皆様どうぞ宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • Mysqlに入れません

    PHPのパッケージxamppでMySQL 5.0.51aをインストールしています。 しかしどうあがいてもMySQLに入れません。 C:\xampp\mysql\bin>mysql ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO) C:\xampp\mysql\bin>mysql -u root -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) C:\xampp\mysql\bin>mysql -u root -p root Enter password: **** ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 教えてください。お願いいたします。

    • ベストアンサー
    • MySQL
  • ユーザ追加して、パスワード無しでもログインできてしまう。

    はじめまして、ronron77と言います。 環境:fedora4+MySQL4.1.16 mysql>grant all on *.* to user1 identified by 'user1' with grant option; でユーザ追加後、 > mysql -u user1 -p >Enter password:user1 mysql> でログインできますが、 > mysql -u user1 mysql> でもログインできてしまいます。 ちなみに、rootでログインすると、 mysql> select host,user,password from mysql.user; host user password localhost root ******* | % user1 ******* | で、パスワードはちゃんと設定されています。 > mysql -u user1 では、ログインできないようにするにはどうしたらよいのでしょうか?

    • ベストアンサー
    • MySQL
  • Query OK, 0 rows affected

    Query OK, 0 rows affected (0.00 sec) が、MySQLに与える影響について、教えてください。 この場合、「0 rows affected」て書いてあるので、 MySQLに与える影響はない、と考えてよいのでしょうか? それとも、何らかの場合(例えばrows以外)では、 コマンドによっては、 この表示が出ても、 MySQLの設定とかが変更されることはあるのでしょうか? 知りたいのは、 この表示が出てきたとき、 打ったコマンドが 「100%失敗だった」か、あるいは、「必ずしもそうとは限らない」、かについてです。

    • ベストアンサー
    • MySQL
  • 誤って全てのユーザを削除してしまい、MySQLサーバに接続出来なくなってしまいました。

    さくらインターネットの専用サーバを使用している者です。OSはCentOS 5です。 また、LinuxコマンドやMySQLも使い始めて間もない初心者です。 明らかに手順がおかしいのですが、root@localhost等のユーザを全て削除した後、新しいユーザを作成しようとしていたら、うっかりexitしてしまい、MySQLサーバに接続出来なくなってしまいました…。 色々と調べてみて、以下のような手順を踏んで接続を試みても、繋がりませんでした。 ・/etc/my.cnfの [mysqld] を [mysqld --skip-grant-tables]に変更して上書きし、MySQLを再起動する ・mysql_install_dbを実行して、MySQLを再起動する ・/etc/php.d/にあるmysql.iniとmysqli.iniのバックアップを取ってから削除し、MySQLを再起動する 再起動は、/etc/rc.d/init.d/mysqld stop を実行してから /etc/rc.d/init.d/mysqld startを実行しておりました。 接続方法はいずれの方法でも以下のようにして行いましたが、結果は同じでした。 # mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) # mysql -u root ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) # mysql -u root -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) どのようにすれば、MySQLサーバに接続出来るようになるのでしょうか? 対策手段が分かる方がおられましたら、ご回答宜しくお願いいたします。

    • ベストアンサー
    • MySQL