我知道的有以下兩種方式能夠在shell中訪問操做mysql數據庫 1. mysql -uusername -ppasswd -e "command;command" [root@localhost ~]# mysql -uroot -p123456 -e "select user,host from mysql.user" +------+-----------------------+ | user | host | +------+-----------------------+ | root | % | | root | 127.0.0.1 | | php | localhost | | root | localhost | | root | localhost.localdomain | +------+-----------------------+ 請看下面這段文字:(引自mysql參考手冊) 對mysql偶爾有用的另外一個選項是-e或--execute選項,可用來將SQL語句傳遞給服務器。該語句必須 用引號引發來(單引號或雙引號)。(然而,若是想要在查詢中將值引發來,則對於查詢應使用雙引號 ,查詢中引用的值應使用單引號)。當使用該選項時,語句被執行,而後mysql當即退出命令外殼。 例如,你能夠用下面的命令得到用戶帳戶列表: shell> mysql -u root -p -e "SELECT User, Host FROM User" mysql 請注意mysql數據庫名做爲一個獨立的參量傳遞。然而,相同的查詢可能已經使用mysql -u root -p -e "SELECT User,Host FROM mysql.User"從外殼中執行。 能夠按這種方式傳遞多個SQL語句,用分號隔開: shell> mysql -u root -p --execute="SELECT Name FROM Country WHERE Name LIKE 'AU%';SELECT COUNT(*) FROM City" world 2. 若是sql語句比較多,可以使用以下方式: [root@localhost ~]# mysql -uroot -p123456 << EOF > use mysql; > select user,host from user; > EOF user host root % root 127.0.0.1 php localhost root localhost root localhost.localdomain 從查詢結果中能夠看出,二者的輸出結果格式不同,前一種方式保留了mysql的輸出格式。 另外,與此篇文章有關的shell 重定向知識,能夠查閱ABS guide第16章節「I/O重定向」和第17章節「Here Documents」