《Linux命令列與shell指令碼編程大全》第二十五章 建立與資料庫、web及電子郵件相關的指令碼

來源:互聯網
上載者:User

標籤:linux   編程   密碼   daemon   讀取   直接   建立使用者   exit   cal   

25.1 MySQL資料庫

/*

但是我在虛擬機器上安裝的時候居然不提示輸入密碼。

這個可以參考http://blog.csdn.net/sinat_21302587/article/details/76870457

導致登入的時候不知道帳號密碼。

預設的帳號密碼在 /etc/mysql/debian.cnf上。如,user和password就是帳號密碼。然後就可以登入了。

 

重啟/開啟/關閉MySQL的方法是:sudo service mysql restart/start/stop

*/

 

1. 我是直接這麼裝的(在公司的伺服器上):

$sudo apt-get install mysql-server

之後會提示要輸密碼(會有介面出來),我這裡輸的是123456.

 

問題:mysql中建立一個表提示這樣的錯誤ERROR 1046(3D000): No Database Selected 怎麼解決???

解決方案:

先建立資料庫,並使用。

create database mytest

use mytest

create table xcytb(id int, name varchar(30));

 

 

2. 下面介紹一種自動登入的方法,在我的虛擬機器上測試的。

如之前所說帳號密碼在 /etc/mysql/debian.cnf中。並且帳號密碼特別不好記。我們的目的的直接在命令列輸入mysql就可以登入。

參考: http://www.jb51.net/article/116488.htm

1)在home目錄下建立一個目錄 .my.cnf 。格式如下:

[client]

password=your_pass

user=your_user

2)改個許可權 chmod 400 .my.cnf  。  (我後來把它改成了777的許可權就無法登入了)

3)命令列輸入mysql就可以登入了。如:

 

 

25.1.1 使用MySQL

1.串連到伺服器

上面已經介紹過了。

 

2.MySQL命令

對於新手來說還需要再去瞭解關係型資料庫的基本知識。這裡只是大概寫一些命令。

; 分號 表明命令的結束

1)show命令:可以用來提取MySQL伺服器的相關資訊

show databases; 顯示當前在MySQL伺服器上配置過的伺服器。

use databaseName;  串連單個資料庫。MySQL會話一次只能串連一個資料庫

show tables; 顯示已串連的資料庫上的表。需要先串連資料庫

 

 

3. 建立資料庫

create databases mytest;

然後可以查看一下

show databases;

再串連上剛剛建立的資料庫

use mytest;

然後就可以建立表,進行增刪改查了。

 

4.建立使用者賬戶

我們已經知道了如何用root管理員賬戶串連到MySQL伺服器。這個賬戶可以完全控制所有的MySQL伺服器對象(就跟linux的root賬戶可以完全控制linux系統一樣)

這樣比較危險

需要在MySQL上建立一個僅對應用中所涉及的資料庫有許可權的獨立使用者賬戶。

語句:GRANT SQL語句可以完成

mysql> GRANT SELECT,INSERT,DELETE,UPDATE, ON mytest.* TO test IDENTIFIED by ‘test‘;

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘ON mytest.* TO test IDENTIFIED by ‘test‘‘ at line 1

就像上面黃色高亮部分一樣,書上這麼寫,但是我運行一直報錯,不知道什麼原因。

 

關於grant可以參考這裡:

https://www.cnblogs.com/hcbin/archive/2010/04/23/1718379.html

 後面的建立表 刪除表 插入資料 刪除資料 更新資料跟sqlite3類似,有人看再寫。 

25.1.2 在指令碼中使用資料庫 

 

25.2 使用web

Lynx程式允許你直接從終端會話中訪問網站。只不過圖片會被替換成標籤。

lynx命令列命令及其擅長從遠程網站上提取資訊。

 

25.3 使用電子郵件

可以用來從shell指令碼中寄送電子郵件的主要工具是Mailx程式。不僅可以用它互動地讀取和發送訊息,還可以用命令列參數指定如何發送訊息

Mailx程式發送訊息的命令列格式為:

main [-eIinv] [-a header] [-b addr] [-c addr] [-s subj] to-addr

 

關於使用電子郵件:

1.在公司伺服器上
sudo apt-get install mailutils 
這裡安裝時會有一些配置(有介面的)。我也不是很懂。就看著配置了一下。
之後就可以發送了。(發送給別人還是收不到)
[email protected]:~/\u684c\u9762/xcyNote$ echo "test,hahah222" | mail -s "xcytest" xiaochongyong
[email protected]:~/\u684c\u9762/xcyNote$ mail
"/var/mail/xiaochongyong": 1 message 1 new
>N   1 xiaochongyong      \u4e00 12\u6708  4 10:  13/471   xcytest

Return-Path: <[email protected]>
X-Original-To: [email protected]
Delivered-To: [email protected]
Received: by sam-server (Postfix, from userid 1011)
    id 296B35E024E; Mon,  4 Dec 2017 10:12:41 +0800 (CST)
Subject: xcytest
To: <[email protected]>
X-Mailer: mail (GNU Mailutils 2.99.98)
Message-Id: <[email protected]>
Date: Mon,  4 Dec 2017 10:12:41 +0800 (CST)
From: [email protected] (xiaochongyong)


test,hahah222

No applicable message
? quit
Saved 1 message in /home/xiaochongyong/mbox
Held 0 messages in /var/mail/xiaochongyong
[email protected]:~/\u684c\u9762/xcyNote$ 

2.在我的虛擬機器上
sudo apt-get install mailutils 
安裝時也沒有配置。之後直接發送,結果報錯了:
[email protected]:~$ echo "hahah,test" | mail -s "test" [email protected]
mail: cannot send message: Process exited with a non-zero status

然後參考了:http://mars914.iteye.com/blog/1470961
接著安裝了
sudo apt-get install sendmail 
sudo apt-get install sendmail-cf
sudo apt-get install sharutils

然後發送:
[email protected]:~$ echo "hahaha" | mail -s "testxcy" [email protected]
[email protected]:~$ echo "hahaha2" | mail -s "testxcy" [email protected]
[email protected]:~$ echo "hahaha2" | mail -s "testxcy" xcy
[email protected]:~$ 
每次都運行特別久。看樣子的報錯了。在home目錄報錯了一個mbox檔案,裡面記錄了一些資訊。


[email protected]:/etc/mail$ mail
"/var/mail/xcy": 3 messages 3 new
>N   1 Mail Delivery Subs 一 12月  4 09:  65/2297  Returned mail: see transc
N   2 Mail Delivery Subs 一 12月  4 10:  65/2297  Returned mail: see transc
N   3 xcy                一 12月  4 10:  15/607   testxcy

Return-Path: <MAILER-DAEMON>
Received: from localhost (localhost)
    by xcy-virtual-machine (8.14.4/8.14.4/Debian-4.1ubuntu1) id vB41nPSx0083
15;
    Mon, 4 Dec 2017 09:49:25 +0800
Date: Mon, 4 Dec 2017 09:49:25 +0800
From: Mail Delivery Subsystem <MAILER-DAEMON>
Message-Id: <[email protected]>
To: <[email protected]>
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
    boundary="vB41nPSx008315.1512352165/xcy-virtual-machine"
Subject: Returned mail: see transcript for details
Auto-Submitted: auto-generated (failure)


This is a MIME-encapsulated message

--vB41nPSx008315.1512352165/xcy-virtual-machine

The original message was received at Mon, 4 Dec 2017 09:48:22 +0800
from localhost [127.0.0.1]

   ----- The following addresses had permanent fatal errors -----
<[email protected]>
    (reason: 550 Failed to connect remote host.)

   ----- Transcript of session follows -----
... while talking to mx3.qq.com.:
<<< 550 Failed to connect remote host.
... while talking to mx2.qq.com.:
<<< 550 Failed to connect remote host.


於是把機器重啟了一下。就可以了
[email protected]:/var/mail$ echo "20171204tete" | mail -s "test2" xcy
[email protected]:/var/mail$ mail
"/var/mail/xcy": 3 messages 1 new 2 unread
U   1 Mail Delivery Subs 一 12月  4 10:  68/2341  Returned mail: see transc
U   2 xcy                一 12月  4 10:  17/626   testxcy
>N   3 xcy                一 12月  4 10:  15/610   test2

Return-Path: <[email protected]>
Received: from xcy-virtual-machine (localhost [127.0.0.1])
    by xcy-virtual-machine (8.14.4/8.14.4/Debian-4.1ubuntu1) with ESMTP id vB42Yuhw003098
    for <[email protected]>; Mon, 4 Dec 2017 10:34:56 +0800
Received: (from [email protected])
    by xcy-virtual-machine (8.14.4/8.14.4/Submit) id vB42YuqW003093;
    Mon, 4 Dec 2017 10:34:56 +0800
Date: Mon, 4 Dec 2017 10:34:56 +0800
From: xcy <[email protected]>
Message-Id: <[email protected]>
Subject: test2
To: <[email protected]>
X-Mailer: mail (GNU Mailutils 2.99.98)


20171204tete

No applicable message


但是發送給別人還是無法收到。

 

《Linux命令列與shell指令碼編程大全》第二十五章 建立與資料庫、web及電子郵件相關的指令碼

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.