《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 ?  但是发送给别人还是无法收到。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏公有云大数据平台弹性 MapReduce

EMR上Hive ACL配置

到目前为止,hive就已经支持acl功能了。现在来看看如果使用acl功能(常用命令)。

30530
来自专栏乐沙弥的世界

ERROR 2002 (HY000): Can't connect to local MySQL server through socket

    在安装好了MySQL之后,使用了新的配置文件后,MySQL服务器可以成功启动,但在登陆的时候出现了ERROR 2002 (HY000): Can't c...

9810
来自专栏编程

Hue中使用Oozie创建Shell工作流在脚本中切换不同用户

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproje...

28290
来自专栏灯塔大数据

15 个 Android 通用流行框架大全

? 1 缓存 名称描述DiskLruCacheJava实现基于LRU的磁盘缓存 2 图片加载 名称描述Android Universal Image Lo...

32660
来自专栏冷冷

SpringMVC 文件下载时 浏览器不能正确显示另存的文件名

问题:通过打印输出流的方式把文件下载到本地,但是在firebox 中 下载的文件不显示文件的文件名,造成文件不能直接打开,其他浏览器可以直接打开. 原因: 主要...

22050
来自专栏java一日一条

15 个 Android 通用流行框架大全

Android自带很多测试工具:JUnit,Monkeyrunner,UiAutomator,Espresso等

11420
来自专栏君赏技术博客

Git切换分支减少重复编译

在今年的时候,项目从 SVN 转移到 gitlab进行 git托管。前期没有特别的注意,后来越来越明显。

20720
来自专栏向治洪

使用Jenkins搭建Android自动打包环境

概述 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:持续的软件版本发布/测试项目;监控外部调用执行的工作。 对于我们...

448100
来自专栏安恒信息

安全漏洞公告

1 Apache Sling 'AbstractAuthenticationFormServlet'开放重定向漏洞 ? 2 Apache Commons Fil...

31360
来自专栏性能与架构

体验 MySQL InnoDB Cluster

Mysql高可用环境的搭建比较麻烦,这使很多人都不去搭建高可用环境,等到有问题时再说 最近Mysql的动作很快,新版本的发布频繁,推出很多新的好用功能及插件,其...

89380

扫码关注云+社区

领取腾讯云代金券