《Linux命令行与shell脚本编程大全》第二十五章 创建与数据库、web及电子邮件相关的脚本
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
这里安装时会有一些配置(有界面的)。我也不是很懂。就看着配置了一下。
之后就可以发送了。(发送给别人还是收不到)
xiaochongyong@sam-server:~/\u684c\u9762/xcyNote$ echo "test,hahah222" | mail -s "xcytest" xiaochongyong
xiaochongyong@sam-server:~/\u684c\u9762/xcyNote$ mail
"/var/mail/xiaochongyong": 1 message 1 new
>N 1 xiaochongyong \u4e00 12\u6708 4 10: 13/471 xcytest
?
Return-Path: <xiaochongyong@sam-server>
X-Original-To: xiaochongyong@sam-server
Delivered-To: xiaochongyong@sam-server
Received: by sam-server (Postfix, from userid 1011)
id 296B35E024E; Mon, 4 Dec 2017 10:12:41 +0800 (CST)
Subject: xcytest
To: <xiaochongyong@sam-server>
X-Mailer: mail (GNU Mailutils 2.99.98)
Message-Id: <20171204021241.296B35E024E@sam-server>
Date: Mon, 4 Dec 2017 10:12:41 +0800 (CST)
From: xiaochongyong@sam-server (xiaochongyong)
test,hahah222
?
No applicable message
? quit
Saved 1 message in /home/xiaochongyong/mbox
Held 0 messages in /var/mail/xiaochongyong
xiaochongyong@sam-server:~/\u684c\u9762/xcyNote$
2.在我的虚拟机上
sudo apt-get install mailutils
安装时也没有配置。之后直接发送,结果报错了:
xcy@xcy-virtual-machine:~$ echo "hahah,test" | mail -s "test" xiao_chongyong@163.com
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
然后发送:
xcy@xcy-virtual-machine:~$ echo "hahaha" | mail -s "testxcy" 474724048@qq.com
xcy@xcy-virtual-machine:~$ echo "hahaha2" | mail -s "testxcy" 474724048@qq.com
xcy@xcy-virtual-machine:~$ echo "hahaha2" | mail -s "testxcy" xcy
xcy@xcy-virtual-machine:~$
每次都运行特别久。看样子的报错了。在home目录报错了一个mbox文件,里面记录了一些信息。
xcy@xcy-virtual-machine:/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: <201712040149.vB41nPSx008315@xcy-virtual-machine>
To: <xcy@xcy-virtual-machine>
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 -----
<474724048@qq.com>
(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.
于是把机器重启了一下。就可以了
xcy@xcy-virtual-machine:/var/mail$ echo "20171204tete" | mail -s "test2" xcy
xcy@xcy-virtual-machine:/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: <xcy@xcy-virtual-machine>
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 <xcy@xcy-virtual-machine>; Mon, 4 Dec 2017 10:34:56 +0800
Received: (from xcy@localhost)
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 <xcy@xcy-virtual-machine>
Message-Id: <201712040234.vB42YuqW003093@xcy-virtual-machine>
Subject: test2
To: <xcy@xcy-virtual-machine>
X-Mailer: mail (GNU Mailutils 2.99.98)
20171204tete
?
No applicable message
?
但是发送给别人还是无法收到。
《Linux命令行与shell脚本编程大全》第二十五章 创建与数据库、web及电子邮件相关的脚本的更多相关文章
- 《Linux命令行与shell脚本编程大全》第十七章 创建函数
可以将shell脚本代码放进函数中封装起来,这样就能在脚本中的任何地方多次使用它了. 17.1 基本的脚本函数 函数:是一个脚本代码块,可以为其命名并在代码中任何位置重用. 17.1.1 创建函数 有 ...
- 《Linux命令行与shell脚本编程大全》 第五章理解shell
5.1 1. cat /etc/passwd 可以查看每个用户自己的默认的shell程序. 2.默认的交互shell会在用户登录某个虚拟控制台终端时启动. 不过还有另外一个默认的shell是/bin/ ...
- Linux命令行与shell脚本编程大全.第3版(文字版) 超清文字-非扫描版 [免积分、免登录]
此处免费下载,无需账号,无需登录,无需积分.收集自互联网,侵权通知删除. 点击下载:Linux命令行与shell脚本编程大全.第3版 (大小:约22M)
- 《Linux命令行与shell脚本编程大全 第3版》创建实用的脚本---11
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---47
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---57
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---57
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---56
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---55
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
随机推荐
- 2017年最受欢迎的UI框架
前端领域最近几年发展的特别迅速,可以说是百家争鸣.在底层的前端框架领域中,最早是jquery称霸互联网,近两年MVVM类型的框架慢慢成为主流,Vue.React和Angular三大框架并驾齐驱.可以说 ...
- 理解vue中的scope的使用
理解vue中的scope的使用 我们都知道vue slot插槽可以传递任何属性或html元素,但是在调用组件的页面中我们可以使用 template scope="props"来获取 ...
- 一段批处理脚本(for 嵌套)
需求: 1.服务器上有一堆按日期生成的目录,已经有N个月了,需要只取当前月份的目录. 2.目录中有一系列文件,文件名字不一样,但存在一定的重复规律. 3.需要从服务器上拷贝文件到本地,自动去重,拷贝到 ...
- N厂劳力士黑水鬼V7出了1年,如今依旧被追捧,供不应求
今天和大家一起来谈谈,风靡复刻界的潜航者,国人眼中的一劳永逸,何为一劳永逸,即(用这个腕表能省很多事)真的有这么牛?其实不然只要是机械腕表都会有或多或少的问题,一劳永逸更多的是指腕表的质量给力,所谓潜 ...
- 实现ajax的步骤
实现ajax的步骤 1.创建xmlHttprequest对象 function createXmlHttpRequest(){ var xmlHttp; try{ //Firefox, Opera 8 ...
- 「Vue」起步 - vue-router路由与页面间导航
vue-router 我们知道路由定义了一系列访问的地址规则,路由引擎根据这些规则匹配找到对应的处理页面,然后将请求转发给页进行处理.可以说所有的后端开发都是这样做的,而前端路由是不存在"请 ...
- Problem B: 时间和日期类(III)
Problem B: 时间和日期类(III) Time Limit: 4 Sec Memory Limit: 128 MBSubmit: 2889 Solved: 1732[Submit][Sta ...
- Python爬虫入门:Urllib库的基本使用
1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它 是一段HTML代码,加 JS.CS ...
- Docker简介和安装
1.Docker 和传统虚拟化方式的不同之处 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程: 而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核 ...
- Python3学习笔记 - 准备环境
前言 最近乘着项目不忙想赶一波时髦学习一下Python3.由于正好学习了Docker,并深深迷上了Docker,所以必须趁热打铁的用它来创建我们的Python3的开发测试环境.Python3的中文教程 ...