基础邮件,mariadb数据库

postfix基础邮件服务

1.1 问题

本例要求在虚拟机server0上配置 postfix 基础服务,具体要求如下:

  1. 监听本机的所有接口
  2. 将邮件域和邮件服务主机名都改为 example.com

然后在server0上使用mail命令测试发信/收信操作:

  1. 由 root 给本机用户 mike 发一封测试邮件
  2. 查收用户 mike 的邮箱,读取邮件内容,确保是从 [email protected] 发过来的

1.2 方案

电子邮箱:[email protected]表示在互联网区域qq.com内的一台邮件服务器上属于用户1234567的一个电子邮箱(目录)。

postfix发信服务(TCP 25,SMTP)的功能:

  • 为用户提供电子邮箱
  • 为邮箱用户向其他邮件服务器发送邮件
  • 为邮箱用户投递/存储收到的邮件

dovecot取信服务(TCP 110/143,POP3/IMAP)的功能:为邮箱用户提取邮件。

1.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:配置postfix基础邮件服务

1)安装postfix软件包

  1. [[email protected] ~]# yum -y install postfix
  2. .. ..

2)调整邮件服务配置

  1. [[email protected] ~]# vim /etc/postfix/main.cf
  2. .. ..
  3. inet_interfaces = all                         //监听接口
  4. mydomain = example.com                         //邮件域
  5. myhostname = example.com                         //本服务器主机名

3)启动postfix服务

  1. [[email protected] ~]# systemctl restart postfix

4)查看邮件服务监听状态

  1. [[email protected] ~]# netstat -antpu | grep :25
  2. tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 1739/master
  3. tcp6 0 0 :::25 :::* LISTEN 1739/master

步骤二:使用mail命令发信/收信

1)给用户root发一封测试邮件

  1. [[email protected] ~]# echo ‘1111‘ | mail -s ‘mail1‘ root

2)由管理员收取指定用户root的邮件

  1. [[email protected] ~]# mail -u root
  2. Heirloom Mail version 12.5 7/5/10. Type ? for help.
  3. "/var/mail/root": 1 message 1 new
  4. >N 1 root Sat Nov 26 17:40 18/532 "mail"
  5. & 1                                                 //读取第1封邮件内容
  6. Message 1:
  7. From [email protected].com Sat Nov 26 17:40:06 2016
  8. Return-Path: <[email protected].com>
  9. X-Original-To: root
  10. Delivered-To: [email protected].com
  11. Date: Sat, 26 Nov 2016 17:40:06 +0800
  12. To: [email protected].com
  13. Subject: mail1                                     //检查邮件标题
  14. User-Agent: Heirloom mailx 12.5 7/5/10
  15. Content-Type: text/plain; charset=us-ascii
  16. From: [email protected].com (root)
  17. Status: R
  18. 1111                                             //检查邮件内容
  19. & q                                                 //退出mail程序
  20. Held 1 message in /var/mail/root
  21. [[email protected] ~]#

2 案例2:postfix空客户端邮件服务

2.1 问题

本例要求初始化后端邮件服务器desktop0.example.com,操作如下:

  1. lab smtp-nullclient setup

然后将虚拟机server0配置为空客户端邮件服务器,具体要求如下:

  1. 此系统不接收外部发送来的邮件,本地发送的任何邮件都会自动路由到 smtp0.example.com
  2. 所发出的邮件显示来自于 desktop0.example.com
  3. 在 server0 上发送一封标题为 Test1 的邮件给本地用户 student ;实际结果将由 desktop0 上的本地用户 student 接收到此邮件

2.2 方案

postfix空客户端邮件服务器的功能:

  • 不为用户提供电子邮箱
  • 为邮箱用户向其他邮件服务器发送邮件
  • 不接受(投递/存储)发送给给本服务器的邮件

空客户端邮件服务器的工作环境:

客户端 ---> 空客户端邮件服务器(发)---> 普通邮件服务器(发/收)

2.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:将server0配置为空客户端邮件服务器

1)重建postfix服务配置

删除配置文件/etc/postfix/main.cf,然后重装postfix软件包:

  1. [[email protected] ~]# rm -rf /etc/postfix/main.cf
  2. [[email protected] ~]# yum -y reinstall postfix
  3. .. ..

2)修改main.cf配置文件,调整或修改现有配置

  1. [[email protected] ~]# vim /etc/postfix/main.cf
  2. #mydomain = example.com                             //移除上一案例的配置
  3. #myhostname = example.com
  4. relayhost = [smtp0.example.com]                     //目标邮件服务器
  5. inet_interfaces = loopback-only                     //仅本机
  6. myorigin = desktop0.example.com                     //发件来源域
  7. mynetworks = 127.0.0.0/8 [::1]/128                 //信任网络
  8. mydestination =                                     //将投递域设为空

3)启动postfix服务

  1. [[email protected] ~]# systemctl restart postfix

4)查看邮件服务监听状态

  1. [[email protected] ~]# netstat -antpu | grep :25
  2. tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2054/master
  3. tcp6 0 0 ::1:25 :::* LISTEN 2054/master

步骤二:将desktop0配置为后端邮件服务器

1)执行 lab smtp-nullclient setup

  1. [[email protected] ~]# lab smtp-nullclient setup
  2. Setting up desktop machine...
  3. Setting up dovecot...
  4. Generating new dovecot certificate...
  5. Setting up postfix... Generating new postfix certificates...
  6. Setting up firewall...
  7. Setting up user student...
  8. Installing httpd to share cert...

2)确认发信服务(postfix)

  1. [[email protected] ~]# netstat -antpu | grep :25
  2. tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 31366/master
  3. tcp6 0 0 :::25 :::* LISTEN 31366/master

3)确认取信服务(dovecot)

  1. [[email protected] ~]# netstat -antpu | grep dovecot
  2. tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 31229/dovecot
  3. .. ..

步骤三:使用mail命令测试空客户端邮件服务器

1)在server0(空客户端邮件服务器)上给本机用户student发信

  1. [[email protected] ~]# echo ‘Mail Data.‘ | mail -s ‘Test1‘ student
  2. [[email protected] ~]# mail -u student                 //本机用户并不会收到邮件
  3. No mail for student

2)在desktop0(后端邮件服务器)上的同名用户student可以收到信

  1. [[email protected] ~]# mail -u student
  2. Heirloom Mail version 12.5 7/5/10. Type ? for help.
  3. "/var/mail/student": 1 message 1 new
  4. >N 1 root Sat Nov 26 18:29 21/833 "Test"
  5. & 1                                                 //读取第1封邮件内容
  6. Message 1:
  7. From [email protected].example.com Sat Nov 26 18:29:08 2016
  8. Return-Path: <[email protected].example.com>
  9. X-Original-To: [email protected].example.com
  10. Delivered-To: [email protected].example.com
  11. Date: Sat, 26 Nov 2016 18:29:08 +0800
  12. To: [email protected].example.com
  13. Subject: Test1                                     //检查邮件标题
  14. User-Agent: Heirloom mailx 12.5 7/5/10
  15. Content-Type: text/plain; charset=us-ascii
  16. From: [email protected].example.com (root)
  17. Status: R
  18. Mail Data.                                         //检查邮件内容
  19. & q                                                 //退出mail程序
  20. Held 1 message in /var/mail/student
  21. [[email protected] ~]#

3 案例3:搭建mariadb数据库系统

3.1 问题

本例要求在虚拟机server0上安装 MariaDB 数据库系统:

  1. 安装 mariadb-server、mariadb 软件包
  2. 启动 mariadb 服务,并确认监听状态

然后在客户端访问此数据库服务:

  1. 使用 mysql 命令访问本机的数据库服务,用户名为 root,密码为空
  2. 执行 SHOW DATABASES; 指令列出有哪些库
  3. 退出 mysql 交互界面

3.2 方案

数据库表及相关软件的基本知识:

  • 数据(记录):用来表示一个事物(实体)的一些信息(属性)的文字/图片文件等,例如字符串“:tedu.cn”
  • 数据表:存放很多条数据记录的容器,例如学员联系信息表、学员月考成绩表
  • 数据表的每一行:存放一条记录
  • 数据表的每一列/字段:很多个事物的同一个属性
  • 数据库:存放很多个相互关联的表格的容器,例如NSD1609学员档案库
  • 数据库管理系统(DBMS):用来管理(创建库/添加/查询/删除/授权等)数据库信息的软件平台

MariaDB服务端:软件包mariadb-server、系统服务mariadb

MariaDB客户端:软件包mariadb、管理工具mysql

MariaDB服务端配置文件:/etc/my.cnf

传输协议及端口:TCP 3306

mysql命令的简单用法:

  1. mysql [-u用户名] [-p[密码]]

3.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:搭建MariaDB数据库服务器

1)安装软件包mariadb-server、mariadb

  1. [[email protected] ~]# yum -y install mariadb-server mariadb
  2. .. ..

2)启动系统服务mariadb,并设置开机自启

  1. [[email protected] ~]# systemctl restart mariadb
  2. [[email protected] ~]# systemctl enable mariadb
  3. ln -s ‘/usr/lib/systemd/system/mariadb.service‘ ‘/etc/systemd/system/multi-user.target.wants/mariadb.service‘

3)检查监听状态

  1. [[email protected] ~]# netstat -antpu | grep :3306
  2. tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2922/mysqld

步骤二:访问本机的MariaDB数据库系统

1)以用户root连接本机的mariadb(或mysqld)数据库服务

  1. [[email protected] ~]# mysql -uroot
  2. Welcome to the MariaDB monitor. Commands end with ; or \g.
  3. Your MariaDB connection id is 3
  4. Server version: 5.5.35-MariaDB MariaDB Server
  5. Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.
  6. Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
  7. MariaDB [(none)]>

2)查看当前数据库系统内有哪些库

  1. MariaDB [(none)]> SHOW DATABASES;
  2. +--------------------+
  3. | Database |
  4. +--------------------+
  5. | information_schema |
  6. | mysql |
  7. | performance_schema |
  8. | test |
  9. +--------------------+
  10. 4 rows in set (0.00 sec)

3)退出操作环境

  1. MariaDB [(none)]> QUIT
  2. Bye
  3. [[email protected] ~]#

4 案例4:配置一个数据库

4.1 问题

本例要求在虚拟机server0上部署 MariaDB 数据库,具体要求如下:

  1. 此数据库系统只能被 localhost 访问
  2. 新建一个数据库名为 Contacts,其中应该包含来自数据库复制的内容,复制文件的 URL 为:http://classroom/pub/materials/users.sql
  3. 除了 root 用户,此数据库只能被用户 Raikon 查询,此用户的密码为atenorth
  4. root用户的密码为 atenorth

4.2 方案

为数据库账号修改密码:

  1. mysqladmin [-u用户名] [-p[旧密码]] password ‘新密码‘

导入/恢复到数据库:

  1. mysql [-u用户名] [-p[密码]] 数据库名 < 备份文件.sql

为数据库用户授权/撤销权限:

  1. grant 权限1,权限2... on 库名.表名 to 用户名@客户机地址 identified by ‘密码‘;
  2. revoke 权限1,权限2... on 库名.表名 from 用户名@客户机地址;

4.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:禁止mariadb服务提供网络监听(只服务于本机)

1)修改配置文件

  1. [[email protected] ~]# vim /etc/my.cnf
  2. [mysqld]
  3. skip-networking                                         //跳过网络

2)重启mariadb服务

  1. [[email protected] ~]# systemctl restart mariadb             //重启服务

3)确认结果

  1. [[email protected] ~]# netstat -anptu | grep :3306         //已经不提供端口监听
  2. [[email protected] ~]# pgrep -l mysqld                     //但进程仍在
  3. 3127 mysqld_safe
  4. 3297 mysqld

步骤二:配置数据库管理密码

1)使用mysqladmin为用户root设置密码

原管理账号root的密码为空,因此无需验证旧密码:

  1. [[email protected] ~]# mysqladmin -u root password ‘atenorth‘

2)验证新密码是否可用

root使用空密码从本机连接将会失败:

  1. [[email protected] ~]# mysql -uroot
  2. ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: NO)

必须指定正确的新密码才能连接成功:

  1. [[email protected] ~]# mysql -uroot -patenorth
  2. Welcome to the MariaDB monitor. Commands end with ; or \g.
  3. Your MariaDB connection id is 4
  4. Server version: 5.5.35-MariaDB MariaDB Server
  5. Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.
  6. Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
  7. .. ..

步骤三:建Contacts库并导入备份数据

1)创建新库Contacts,并退出操作环境

  1. MariaDB [(none)]> CREATE DATABASE Contacts;
  2. Query OK, 1 row affected (0.00 sec)
  3. MariaDB [(none)]> QUIT
  4. Bye

2)下载指定的数据库备份

  1. [[email protected] ~]# wget http://classroom.example.com/pub/materials/users.sql
  2. --2016-11-26 19:00:37-- http://classroom.example.com/pub/materials/users.sql
  3. Resolving classroom.example.com (classroom.example.com)... 172.25.254.254
  4. Connecting to classroom.example.com (classroom.example.com)|172.25.254.254|:80... connected.
  5. HTTP request sent, awaiting response... 200 OK
  6. Length: 2634 (2.6K) [application/sql]
  7. Saving to: ‘users.sql’
  8. 100%[=====================>] 2,634 --.-K/s in 0s
  9. 2016-11-26 19:00:37 (269 MB/s) - ‘users.sql’ saved [2634/2634]
  10. [[email protected] ~]# ls -lh users.sql                     //确认下载的文件
  11. -rw-r--r--. 1 root root 2.6K Mar 31 2016 users.sql

3)导入数据库

  1. [[email protected] ~]# mysql -uroot -patenorth Contacts < users.sql

4)重新连入操作环境,确认导入结果

  1. [[email protected] ~]# mysql -uroot -patenorth
  2. .. ..
  3. MariaDB [(none)]> USE Contacts;                     //使用指定库
  4. Database changed
  5. MariaDB [Contacts]> SHOW TABLES;                 //列出有哪些表
  6. +--------------------+
  7. | Tables_in_Contacts |
  8. +--------------------+
  9. | base |
  10. | location |
  11. +--------------------+
  12. 2 rows in set (0.00 sec)

步骤四:为Contacts库授权

1)允许用户Raikon从本机访问,具有查询权限,密码为atenorth

  1. MariaDB [Contacts]> GRANT select ON Contacts.* TO [email protected] IDENTIFIED BY ‘atenorth‘;
  2. Query OK, 0 rows affected (0.00 sec)

2)退出操作环境

  1. MariaDB [Contacts]> QUIT
  2. Bye
  3. [[email protected] ~]#

5 案例5:使用数据库查询

5.1 问题

本例要求配置MariaDB数据库,完成以下任务:

  1. 禁止空密码root用户访问mariadb数据库
  2. 在系统server0上使用数据库Contacts,通过SQL查询回答下列问题:密码是solicitous的人的名字?有多少人的姓名是Barbara同时居住在 Sunnyvale?

5.2 方案

表记录增删改查:

  1. insert into [库名.]表名 values(值1,值2,值3);
  2. delete from [库名.]表名 where ...;
  3. update [库名.]表名 set 字段名=字段值 where ....;
  4. select 字段列表 from [库名.]表名 where 字段名1=值 and|or 字段名2=值;

统计查询结果的数量:

  1. select count(*) from [库名.]表名 where .. ..;

5.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:清理空密码root用户

1)确认空密码root用户记录

MariaDB服务端默认的mysql库user表保存了用户授权记录。

使用DESC指令查看表结构,以便了解相关字段名:

  1. MariaDB [(none)]> DESC mysql.user;
  2. +------------------------+-----------------------------------+------+-----+---------+-------+
  3. | Field | Type | Null | Key | Default | Extra |
  4. +------------------------+-----------------------------------+------+-----+---------+-------+
  5. | Host | char(60) | NO | PRI | | |
  6. | User | char(16) | NO | PRI | | |
  7. | Password | char(41) | NO | | | |

列出user表中的Host、User、Password字段,限定密码为空的root用户:

  1. MariaDB [(none)]> SELECT Host,User,Password FROM mysql.user WHERE User=‘root‘ AND Password=‘‘;
  2. +---------------------+------+----------+
  3. | Host | User | Password |
  4. +---------------------+------+----------+
  5. | server0.example.com | root | |
  6. | 127.0.0.1 | root | |
  7. | ::1 | root | |
  8. +---------------------+------+----------+
  9. 3 rows in set (0.00 sec)
  10. MariaDB [(none)]>

2)删除空密码root用户记录

使用DELETE指令删除掉需要清除的授权记录:

  1. MariaDB [(none)]> DELETE FROM mysql.user WHERE User=‘root‘ AND Password=‘‘;
  2. Query OK, 3 rows affected (0.00 sec)

再次查询,确认删除结果:

  1. MariaDB [(none)]> SELECT Host,User,Password FROM mysql.user WHERE User=‘root‘ AND Password=‘‘;
  2. Empty set (0.00 sec)

步骤二:按条件查询表记录

1)按单个条件查询

找出密码是solicitous的人的名字?

  1. MariaDB [(none)]> SELECT name FROM Contacts.base WHERE Password=‘solicitous‘;
  2. +-------+
  3. | name |
  4. +-------+
  5. | James |
  6. +-------+
  7. 1 row in set (0.00 sec)

2)按多个条件在关联的两张表中查询

有多少人的姓名是Barbara同时居住在 Sunnyvale?

  1. MariaDB [(none)]> USE Contacts;
  2. .. ..
  3. Database changed
  4. MariaDB [Contacts]> SELECT COUNT(*) FROM base,location WHERE base.name=‘Barbara‘ AND location.city=‘Sunnyvale‘ AND base.id=location.id;
  5. +----------+
  6. | COUNT(*) |
  7. +----------+
  8. | 1 |
  9. +----------+
  10. 1 row in set (0.00 sec)

原文地址:https://www.cnblogs.com/xiaoren112/p/8269227.html

时间: 2024-07-29 13:22:11

基础邮件,mariadb数据库的相关文章

‘’数据库基础、MariaDB服务部署、库表基本管理、数据类型‘’经典案例

案例1:部署MariaDB服务器 案例2:使用mysql连接工具 案例3:库的基本操作 案例4:表格创建及查询 案例5:删除表 案例6:复制表 案例7:字符型字段应用 案例8:数值型字段应用 1 案例1:部署MariaDB服务器1.1 问题 本例要求在CentOS 7虚拟机上部署MariaDB数据库服务器,完成下列任务: 1)安装mariadb-server.mariadb软件包 2)启动mariadb服务,并设置开机自启,确认服务状态 3)将数据库管理用户 root 的密码设为 [email 

MySQL/MariaDB数据库备份与恢复

前言 数据库一般存放着企业最为重要的数据,它关系到企业业务能否正常运转,数据库服务器总会遇到一些不可抗拒因素,导致数据丢失或损坏,而数据库备份可以帮助我们避免由于各种原因造成的数据丢失或着数据库的其他问题.本文将讲解MySQL/MariaDB数据库的几种备份方法. 基础知识 备份类型 完全备份:备份整个数据库 部分备份:仅备份其中的一张表或多张表 增量备份:仅备份从上次完全备份或增量备份之后变化的数据部分 差异备份:备份上次备份后变化的数据部分,和增量备份区别在于差异备份只可以相对完全备份做备份

MariaDB数据库主从复制、双主复制、半同步复制、基于SSL的安全复制实现及其功能特性介绍

一.复制概述 MariaDB/MySQL内建的复制功能是构建大型,高性能应用程序的基础.将MySQL的数据分布到多个系统上去,这种分布的机制,是通过将MySQL的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位

Mac中MariaDB数据库的安装步骤

前言 MariaDB由MySQL的创始人Michael Widenius主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中.MariaDB名称来自Michael Widenius的女儿Maria的名字.那么在Mac中如何安装MariaDB数据库呢?下面小编就给大家介绍Mac中安装配置MariaDB数据库的方法. MariaDB安装步骤 如果你是Mac上的开发者,通过本文你可以在OS X上通过Hom

详解MariaDB数据库的事务

1.什么是事务 数据库事务:(database transaction): 事务是由一组SQL语句组成的逻辑处理单元,一组事务中的SQL语句要不全部执行成功功:如果其中某一条执行失败,则这组SQL语句中已经执行的语句会回滚到这组SQL语句执行之前的状态. 事务处理,可以确保非事务性单元的多个操作都能成功完成,否则不会更新数据资源. 数据库默认事务是自动提交的, 也就是发一条 sql 它就执行一条.如果想多条 sql 放在一个事务中执行,则需要使用事务进行处理. 当我们开启一个事务,并且没有提交,

MySQL/MariaDB数据库基于SSL实现主从复制

前言 备份数据库是生产环境中的首要任务,有时候不得不通过网络进行数据库的复制,由于MySQL/MariaDB的主从复制是明文传送的,如果在生产环境中跨网络传送,数据的安全性就无法完全保证,为了解决这一问题,我们需要一种安全的方式进行传送,即基于SSL加密进行数据传输. 部署配置 实验拓扑 实验环境 系统环境:CentOS6.6 数据库版本:mariadb-5.5.36 #注意:主从服务器数据库版本须一致:主从服务器时间须同步 #此实验从服务器只做一组为例 配置主从复制 安装mariadb [[e

heartbeat v1 实现 MariaDB数据库的高可用

MariaDB数据库服务的高可用: 使用 heartbeat v1 版实现两个节点的 MariaDB数据库服务的高可用. 节点: node1        192.168.60.33 node2        192.168.60.88 MySQL数据库的数据文件使用nfs共享文件系统解决 nfs Server       192.168.60.22 架构如下图: 一.heartbeat 节点之间通信要求的设置: (1).解决节点的主机名解析 因为 heartbeat 的节点间通讯基于名称.基于

Centos 7 安装 Wordpress(三)-----安装 MariaDB数据库、PHP & PHPMyAdmin

全文根据 Keneuro的博客来安装,所以也把该地址分享出来. ----------------------------------------------------------------------------- 下面咱们也来试下. 先来试下 Centos 7 安装 Wordpress(三)-----安装 MariaDB数据库.PHP & PHPMyAdmin

MySQL/MariaDB数据库主从复制

MySQL数据库复制概述 MySQL的主从复制是指从服务器向主服务器获取二进制日志文件,然后在从服务器上对这些日志重新执行,从而使从服务器和主服务器保持同步.但由于是异步的复制,从服务器在一定程度上落后于主服务器,刚写入到主服务器上的数据可能服务在从服务器上查询得到. MySQL的复制原理: (1)从服务器创建I/O线程连接主数据库,向主数据库请求二进制日志文件. (2)主库上启动Binlog Dump,将二进制日志文件发送给I/O线程,I/O线程获取数据后将数据写在从库的中继日志中(relay