Linux系统工程师
实验所用系统为Redhat-rhel8.2。
Linux的系统工程师–Apache的管理及优化
一、Apache的作用与安装
Web服务器软件
在web被访问时通常使用http://的方式
http:// ##超文本传输协议
dnf install httpd.x86_64 -y
二、Apache的启用
systemctl enable --now httpd ##开启服务并设定服务位开机启动
firewall-cmd --list-all ##查看火墙信息
firewall-cmd --permanent --add-service=http ##在火墙中永久开启http访问
firewall-cmd --permanent --add-service=https ##在火墙中永久开启https访问
firewall-cmd --reload ##刷新火墙使设定生效
vim /var/www/html/index.html ##修改欢迎界面
///
hello
///
172.25.254.109 ##在浏览器里测试
#apache
启用
#测试成功
三、Apache的基本信息
服务名称:httpd
配置文件:
/etc/httpd/conf/httpd.conf ##主配置文件
/etc/httpd/conf.d/*.conf ##子配置文件
默认发布目录:
/var/www/html
默认发布文件:
index.html
默认端口:
80 ##http
443 ##https
用户:
apache
日志:
/etc/httpd/logs
四、Apacdhe的基本配置
1、Apache的端口修改
vim /etc/httpd/conf/httpd.conf ##修改配置文件
///
Listen 8080
///
systemctl restart httpd
netstat -antlupe | grep httpd ##端口查看
如果需要访问
firewall-cmd --permanent --add-port=8080/tcp ##在火墙中永久开启8080端口访问
firewall-cmd --reload
systemctl restart httpd
http://172.25.254.109:8080 ##浏览器访问
firewall-cmd --permanent --remove-port=8080/tcp ##删除端口
vim /etc/httpd/conf/httpd.conf ##恢复配置文件
2、默认发布文件
vim /var/www/html/index.html ##默认发布文件
///
index.html
///
vim /var/www/html/westos.html ##新建发布文件
///
westos.html
///
vim /etc/httpd/conf/httpd.conf ##修改配置文件
///
DirectoryIndex westos.html index.html ##先加载westos.html
///
systemctl restart httpd
#配置文件中将westos.html加在前面
#先访问westos.html
[注意] 如果配置文件中没有加westos.html,访问时则用http://172.25.254.109/westos.html
#将配置文件恢复默认
#默认访问index.html
#也可以访问,但是需要加上路径
3、默认发布目录
mkdir /westos_apache ##新建发布目录
vim /westos_apache/index.html ##编辑发布目录的发布文件
///
westos_apache
///
semanage fcontext -a -t httpd_sys_content_t '/westos_apache(/.*)?' ##修改安全上下文
restorecon -RvvF /westos_apache/ ##读取安全上下文
vim /etc/httpd/conf/httpd.conf ##修改配置文件
///
#DocumentRoot "/var/www/html" ##注释默认发布目录
DocumentRoot "/westos_apache" ##使用新的发布目录
<Directory "/westos_apache">
Require all granted ##同意授权
</Directory>
///
systemctl restart httpd
测试:
http://172.25.254.109
#westos_apache
[注意] 实验完成后将所作的修改注释掉,恢复默认
#配置文件修改
#测试访问成功
#恢复配置文件
五、apache的访问控制
[注意] 修改完配置文件要重启服务
1、控制IP
实验准备:
mkdir /var/www/html/westos
vim /var/www/html/westos/index.html
///
westos/index.html
///
当前真机ip为172.25.254.9,a虚拟机ip为172.25.254.109作为服务端,b虚拟机ip为172.25.254.209作为客户端
即用真机和b虚拟机的浏览器访问
- 允许除了9号的所有人访问
vim /etc/httpd/conf/httpd.conf
///
<Directory "/var/www/html/westos"> ##授权
Order Allow,Deny ##先访问allow,后访问deny
Allow from all ##允许所有人访问
Deny from 172.25.254.9 ##拒绝9号访问
</Directory>
///
systemctl restart httpd
测试:
http://172.25.254.109/westos/
9-> 拒绝
其他->同意
#配置文件修改
#真机9号访问失败
#虚拟机b访问成功
- 拒绝除了9号的所有人访问
vim /etc/httpd/conf/httpd.conf
///
<Directory "/var/www/html/westos">
Order Deny,Allow ##先访问deny,再访问allow
Deny from all ##拒绝所有人访问
Allow from 172.25.254.9 ##允许9号访问
</Directory>
systemctl restart httpd
测试:
http://172.25.254.109/westos/
9->同意
其他->拒绝
#配置文件修改
#真机9号访问成功
#虚拟机b访问失败
2、控制访问(用户名和密码)
实验准备:
cd /etc/httpd
htpasswd -cm .htpasswd admin ##添加用户和密码
#New password:123
#Re-type new password:123
#Adding password for user admin
cat .htpasswd ##查看用户和加密的密码
htpasswd -m .htpasswd admin1
#New password: 123
#Re-type new password: 123
#Adding password for user admin1
ls -a /etc/httpd ##查看隐藏文件.htpasswd
cat .htpasswd ##查看内容
[注意] 添加另一个用户时,参数为
-m
,使用-cm
会覆盖第一个用户
- 只允许
admin
访问
vim /etc/httpd/conf/httpd.conf
///
<Directory "/var/www/html/westos">
AuthUserFile /etc/httpd/.htpasswd ##执行文件的路径
AuthName "Please input username and password"
AuthType basic
Require user admin ##允许admin用户访问
# Require valid-users ##注释,允许.htpasswd里的所有用户访问
</Directory>
///
systemctl restart httpd
#配置文件修改
#admin用户访问成功
#admin1用户访问失败
[注意] 清理历史记录和缓存,才能使用新用户登录
- 允许
.htpasswd
里的所有用户访问
vim /etc/httpd/conf/httpd.conf
///
# Require user admin ##注释,admin用户访问
Require valid-user ##允许.htpasswd里的所有用户访问
///
systemctl restart httpd
#配置文件修改,注意valid-users
–>valid-user
和”#“位置
#admin
用户访问成功
#admin1
用户访问成功
六、apache虚拟主机
实验准备:
mkdir -p /var/www/vhost/westos.org/{news,music,map} ##新建发布目录
echo news.westos.org > /var/www/vhost/westos.org/news/index.html
echo music.westos.org > /var/www/vhost/westos.org/music/index.html
echo map.westos.org > /var/www/vhost/westos.org/map/index.html ##发布文件
vim /etc/httpd/conf.d/vhosts.conf ##域名配置文件
///
<VirtualHost _default_:80>
DocumentRoot /var/www/html ##文件路径
CustomLog logs/default.log combined ##日志路径
</VirtualHost>
<VirtualHost *:80>
ServerName music.westos.org ##名称
DocumentRoot /var/www/vhost/westos.org/music
CustomLog logs/music.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName news.westos.org
DocumentRoot /var/www/vhost/westos.org/news
CustomLog logs/news.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName map.westos.org
DocumentRoot /var/www/vhost/westos.org/map
CustomLog logs/map.log combined
</VirtualHost>
///
systemctl restart httpd
#配置文件修改
[注意] 在哪打开浏览器就在哪里解析域名
su - root
vim /etc/hosts ##域名解析配置文件
///
172.25.254.109 www.westos.org music.westos.org news.westos.org map.westos.org
///
ping map.westos.org
测试:
http://news.westos.org
[注意] 如果文件没有问题,浏览器却显示其他域名的内容,清理浏览器缓存
#域名解析文件
#访问成功
七、apache的语言支持
LAMP linux+Apache+Myaql+PHP/Perl/Python
1、php
dnf install php.x86_64 -y
systemctl restart httpd
vim /var/www/html/index.php
///
<?php
phpinfo();
?>
///
测试:
http://172.25.254.109/index.php
#访问成功
2、cgi
cd /var/www/html/
mkdir cgi
cd cgi
vim index.cgi
///
#!/usr/bin/perl
print "Content-type:text/html\n\n";
print `date`; ##`date`表示执行该命令
##注意符号为‘`’,不是引号
///
chmod +x index.cgi ##执行权限
ls -Zd /var/www/cgi-bin/ ##查看安全上下文
semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?' ##设定同步安全上下文
restorecon -RvvF /var/www/html/cgi/ ##读取设定
./index.cgi ##查看命令是否可以运行
##此时浏览器打不开cgi/index.cgi,只能看见源代码,因为不能被识别
vim /etc/httpd/conf.d/vhosts.conf ##域名配置文件
///
<Directory "/var/www/html/cgi">
Options +ExecCGI
AddHandler cgi-script .cgi ##这两种类型的文件可以被识别执行
</Directory>
///
systemctl restart httpd
检测:
http://172.25.254.109/cgi/index.cgi
[注意] 如果确认无错,检查
selinux
,更改为permissive
#编辑发布文件
#此时浏览器打不开cgi/index.cgi
,只能看见源代码
#访问成功
3、wsgi
cd /var/www/html/
vim index.wsgi ##编辑发布文件
///
def application(env,westos):
westos('200 ok',[('Content-Type','text/html')])
return [b'hello westos']
/// ##注意缩进
chmod +x index.wsgi ##给执行权限
dnf search wsgi
dnf install python3-mod_wsgi.x86_64 -y
systemctl restart httpd
##此时浏览器里172.25.254.109/index.wsgi弹出下载index.wsgi
vim /etc/httpd/conf.d/vhosts.conf
///
<VirtualHost *:80>
ServerName wsgi.westos.org
WSGIScriptAlias / /var/www/html/index.wsgi
</VirtualHost>
///
systemctl restart httpd
##域名解析
vim /etc/hosts
///
172.25.254.109 www.westos.org music.westos.org news.westos.org map.westos.org wsgi.westos.org
///
ping wsgi.westos.org
测试:
浏览器
wsgi.westos.org
#未进行域名解析前,会弹出下载文件
#域名解析成功
#访问成功
八、apache的加密访问
安装加密软件
dnf install mod_ssl -y ##安装加密插件
systemctl restart httpd
mkdir /etc/httpd/tls
openssl req --newkey rsa:2048 -nodes -sha256 -keyout /etc/httpd/tls/westos.org.key -x509 -days 365 -out /etc/httpd/tls/westos.org.crt ##证书设定
///
CN-->Shaanxi-->Xi'an-->WESTOS-->Linux-->www.westos.org-->admin@westos.org
///
############
-req ##请求
x509 ##证书格式
--newkey rsa:2048 -nodes ##生成私钥
-sha256 -keyout /etc/httpd/tls/westos.org.key ##生成证书签名文件
-x509 -days 365 -out /etc/httpd/tls/westos.org.crt ##生成证书
############
ls /etc/httpd/tls/
mkdir /var/www/vhost/westos.org/login
vim /var/www/vhost/westos.org/login/index.html
///
login.westos.org
///
vim /etc/httpd/conf.d/vhosts.conf
///
<VirtualHost *:443>
ServerName login.westos.org
DocumentRoot /var/www/vhost/westos.org/login
Customlog logs/login.log combined
SSLEngine on
SSLCertificateFile /etc/httpd/tls/westos.org.crt
SSLCertificateKeyFile /etc/httpd/tls/westos.org.key
</VirtualHost>
///
systemctl restart httpd
############
^(/.*)$ ##客户地址栏中输入的地址
%{HTTP_HOST} ##客户主机
$1 ##RewriteRule后面根的第一串字符的值
############
##域名解析
###做访问的主机
vim /etc/hosts
///
172.25.254.109 www.westos.org music.westos.org news.westos.org map.westos.org wsgi.westos.org login.westos.org
///
ping login.westos.org
测试:
浏览器
login.westos.org
[注意] 但是此时真机不走加密路径也可以直接访问172.25.254.109,显然不合理,处于安全性,当客户主机使用非加密方式访问时,需要将其转换成加密方式来进行访问,所以需要页面转换
vim /etc/httpd/conf.d/vhosts.conf
///
<VirtualHost *:80>
ServerName login.westos.org
RewriteEngine On
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1
</VirtualHost>
///
systemctl restart httpd
再重新进行测试
#证书设定
#真机(测试主机)做地址解析
#加密访问
九、squid+Apache
Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid主要设计用于在Unix一类系统运行。除了HTTP外,对于FTP与HTTPS的支援也相当好,在3.0 测试版中也支援了IPv6。
1、squid正向代理
实验环境:
westosa–客户端,不能上网
westosb–代理主机,可以连接westosa,设定可以上网
通过网络软件仓库下载软件时,真机火墙需要关闭,但是在
westosa
主机做测试时需要westosb
主机可以上网,此时真机火墙需要打开,所以可以提前下载好软件再开始做实验,避免麻烦
###westosb
dnf install squid -y
###westosa(172.25.254.109)
dnf install firefox -y
###真机
firewall-cmd --add-masquerade ##地址伪装功能打开,此时需要开启真机火墙
###westosb(172.25.254.209)
#网关与IP设定
vim /etc/sysconfig/network-scripts/ifcfg-westosb
///
BOOTPROTO=none
IPADDR=172.25.254.209
PREFIX=24
NAME=westosb
DEVICE=ens3
ONBOOT=yes
GATEWAY=172.25.254.9 ##此处网关ip为真机ip
DNS1=114.114.114.114
///
nmcli connection reload
nmcli connection show
ifconfig
route -n ##查看网关
cat /etc/resolv.conf ##查看DNS
ping www.baidu.com ##查看网络是否畅通
#代理主机网络设定成功
- 设定代理服务
###westosb
dnf install squid -y ##下载squid代理服务器,此时需要关闭真机火墙才能下载
systemctl status squid.service
vim /etc/squid/squid.conf ##squid配置文件
///
59 http_access allow all ##http访问控制模块,允许所有人访问
65 cache_dir ufs /var/spool/squid 100 16 256 ##添加磁盘缓存目录
///
systemctl restart squid.service
netstat -antlupe | grep squid ##查看端口
systemctl start firewalld.service ##开启火墙
firewall-cmd --permanent --add-service=squid ##将squid加入火墙自启程序
firewall-cmd --reload
firewall-cmd --list-all
#配置文件修改
###westosa(172.25.254.109)
dnf install firefox -y ##真机火墙需要关闭
##firefox
右上角的三条杠
-->preperences
-->General
-->Network Settings
-->Settings
-->选择Manual proxy configuration
-->勾选Use this proxy server for all protocols
-->HTTP Proxy写入westosb的ip(172.25.254.209)
-->Port3128 ##squid默认端口
-->OK
-->www.baidu.com ##第一次访问慢是因为代理要做缓存,真机火墙需要打开
[注意] 但此时在shell中
ping
不通百度,因为是通过代理,所以westosa
本机仍不可以上网
#浏览器中设定
#通过代理,不能上网的westosa
主机也可以上网
#westosa
主机不能上网
2、squid反向代理
CDN代理加速,总部服务器向各地分出分部做代理,即缓存服务器,用于提高客户访问速度。
CDN的全称是Content DeliveryNetwork,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。
简单的来说,就是把原服务器上数据复制到其他服务器上,用户访问时,那台服务器近访问到的就是那台服务器上的数据。CDN加速优点是成本低,速度快。适合访问量比较大的网站。
- westosa(客户端)
dnf install httpd.x86_64 -y ##下载apache
systemctl enable --now httpd ##开启apache
systemctl start firewalld.service ##开启火墙
firewall-cmd --permanent --add-service=http ##将apache加入火墙自启
firewall-cmd --reload
echo 172.25.254.109 > /var/www/html/index.html ##编辑客户端发布文件
- westosb(代理服务器)
vim /etc/squid/squid.conf
///
62 http_port 80 vhost vport ##虚拟端口80,允许虚拟主机访问
63 cache_peer 172.25.254.109 parent 80 0 proxy-only ##从westosa的80端口缓存数据,将其作为父级服务器,0表示没有备份主机用于数据保护,proxy-only表示只作为代理服务器
///
systemctl restart squid.service
firewall-cmd --permanent --add-service=http ##在系统火墙中永久开启http,使westosa的apache服务可以通过火墙,但westosb本机不需要apache服务
firewall-cmd --reload
#编辑配置文件
- 真机
测试
#浏览器
172.25.254.109-->index.html(172.25.254.109)
172.25.254.209-->109的数据(172.25.254.109)
#显示westosa
主机的发布文件
#通过反向代理也显示westosa
主机的发布文件
[注意] 此时在
westosa
主机的浏览器访问,不能被访问到,因为配置文件中端口发生改变,将端口改为80,则可以访问。
#westosa
主机浏览器访问失败
#改变端口
#可以访问
代入企业-代理-个人的关系,此处的客户端应该指的是企业总部服务器,因为代理服务器是总部服务器的代理,所以称之为反向代理。
Linux的系统工程师–mysql数据库的基本管理
实验环境:
一台虚拟机
一、数据库的介绍
1、什么是数据库
数据库是一个按数据结构来存储和管理数据的计算机软件系统,是存放数据的仓库。本质是一个高级的表格软件。
2、常见的数据库
1)IBM 的DB2
作为关系数据库领域的开拓者和领航人,IBM在1997年完成了System R系统的原型,1980年开始提供集成的数据库服务器—— System/38,随后是SQL/DSforVSE和VM,其初始版本与SystemR研究原型密切相关。DB2 forMVSV1 在1983年推出。该版本的目标是提供这一新方案所承诺的简单性,数据不相关性和用户生产率。1988年DB2 for MVS 提供了强大的在线事务处理(OLTP)支持,1989 年和1993 年分别以远程工作单元和分布式工作单元实现了分布式数据库支持。DB2 Universal Database 6.1则是通用数据库的典范,是第一个具备网上功能的多媒体关系数据库管理系统,支持包括Linux在内的一系列平台。
2)Oracle
Oracle 前身叫SDL,由Larry Ellison 和另两个编程人员在1977创办,他们开发了自己的拳头产品,在市场上大量销售,1979 年,Oracle公司引入了第一个商用SQL 关系数据库管理系统。Oracle公司是最早开发关系数据库的厂商之一,其产品支持最广泛的操作系统平台。目前Oracle关系数据库产品的市场占有率名列前茅。
3)mySQL
mySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
4)SQL Server
1987 年,微软和 IBM合作开发完成OS/2,IBM 在其销售的OS/2 ExtendedEdition 系统中绑定了OS/2Database Manager,而微软产品线中尚缺少数据库产品。为此,微软将目光投向Sybase,同Sybase 签订了合作协议,使用Sybase的技术开发基于OS/2平台的关系型数据库。1989年,微软发布了SQL Server 1.0 版。
5)MongoDB
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
6)SQLite
是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。
3、mariadb
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。
MariaDB由MySQL的创始人Michael Widenius主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。
MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX存储引擎。
4、数据库中的常用名词
1、字段:表格中的表头
2、表:表格
3、库:存放表格的目录
4、查询:对表格中的指定内容进行查看
二、软件的安装与启用
- 安装
dnf install mariadb-server.x86_64 -y ##安装
- 基本信息
mariadb.service ##服务
3306 ##默认端口
/etc/my.cnf.d/mariadb-server.cnf ##主配置文件
/var/lib/mysql ##数据目录,当需要重新安装mariadb时需要清理此目录或备份
- 数据库开启
systemctl enable --now mariadb
三、数据库的安全初始化
1、关闭数据库开放端口
vim /etc/my.cnf.d/mariadb-server.cnf ##编辑主配置文件
///
skip--networrking=1 ##关闭数据库的开放端口,加强其安全性
///
systemctl restart mariadb.service ##重启服务
netstat -antlupe | grep mysql ##查看端口
#编辑主配置文件
#编辑配置文件,重启服务,查看端口
2、执行安全初始化脚本
mysql_secure_installation ##为数据库设置密码
///
Enter current password for root (enter for none): ##无现有密码
OK, successfully used password, moving on...
Set root password? [Y/n] y
New password: 123
Re-enter new password: 123
Password updated successfully!
Reloading privilege tables.. ##为root用户设定密码
Remove anonymous users? [Y/n] y
... Success! ##不允许匿名用户访问
Disallow root login remotely? [Y/n] y
... Success! ##不允许其他root用户远程连接数据库
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success! ##不允许访问测试库
Reload privilege tables now? [Y/n] y
... Success! ##重启刷新安全设定
///
[注意] 数据库密码设定完成后,输入mysql命令不能进入数据库,只能指定登录用户root后输入密码才能访问
mysql ##默认不需要密码,初始化完毕后需要
mysql -uroot -p123 ##-u指定用户,-p指定密码
#登录数据库
四、数据库的基本管理
1、查看信息
SHOW DATABASES; ##显示数据库名称
USE mysql; ##进入mysql库
SHOW TABLES; ##显示库中的所有表
SELECT * FROM user; ##查询指定表的所有数据
SELECT Host,User,Password FROM user; ##查询指定字段
SELECT Host FROM mysql.user WHERE User='root' ##查询指定字段和指定行
[注意] 分号;不可少
#显示库,进入库
#显示库中的表
#查询user
表的所有数据
#查询指定user
表的指定字段信息
#查询指定user
表的指定字段,指定用户root
行
2、新建
CREATE DATABASE westos; ##新建库
USE westos; ##进入库
CREATE TABLE linux (
-> username varchar(6) not null,
-> password varchar(30) not null
-> ); ##新建表
DESC linux; ##显示表结构
INSERT INTO linux VALUES ('user1','123'); ##插入数据
FLUSH PRIVILEGES; ##刷新数据库
#新建库,新建表,插入数据
3、更改
ALTER TABLE linux RENAME haha;
##对表重命名,但一般不会这样做,因为会导致数据丢失
ALTER TABLE linux ADD age varchar(3) AFTER username;
##新建字段,指定在字段username后,默认在最后一行,指定位置不能是第一行,会导致数据漂移
UPDATE linux SET age='4';
##为age这一字段填入数据,默认为这一字段的所有行添加
UPDATE linux SET age='20' WHERE username='user1';
##为age字段指定行添加数据
UPDATE linux SET age='20' WHERE username='user2' and password='123';
##可以指定更多信息进行精准添加
ALTER TABLE linux DROP age;
##删除age这一字段
#将表linux
重命名为haha
#指定在username
字段后添加字段age
#添加数据
#精准添加与删除字段
4、删除
DELETE FROM linux WHERE username='user3' and password='123'; ##删除表中指定信息的一行
DROP TABLE linux; ##删除表
DROP DATABASE westos; ##删除库
#删除表中信息
#删除表和库
五、密码管理
1、原有密码已知时修改密码
mysqladmin -uroot -p password lee ##修改密码为lee(也可以不加新密码,因为不安全)
Enter password:123 ##输入原有密码更改成功
#命令行是否加新密码的两种修改密码方式
2、原有密码未知时数据库密码破解
systemctl stop mariadb
##停用服务
mysqld_safe --skip-grant-tables &
##跳过授权表启用数据库,&打入后台
mysql -uroot
##无需密码登录数据库
UPDATE mysql.user set Password=password('lee') WHERE User='root';
##密码从未修改过,修改password字段
UPDATE mysql.user set authentication_string=password('lee') WHERE User='root';
##如果被修改过,则修改authencation_string字段
ps aux | grep mysql
##查找mysql的进程
kill -9 36737
##结束进程
ps aux | grep mysql
##确认没有mysql进程
systemctl start mariadb
##启动服务
有人会担心此方式修改密码不安全,但此方式要在数据库的物理机里操作,所以相对来讲是很安全的
#数据库密码破解
六、数据库的备份
mysqldump -uroot -pwestos --all-database ##备份所有
mysqldump -uroot -pwestos --all-database --no-data ##不备份数据,只备份结构
[注意] 不指定输出位置,为无效备份
mysqldump -uroot -pwestos westos ##备份库westos
mysqldump -uroot -pwestos westos > /mnt/westos.sql ##备份库到指定位置
- 恢复1
mysql -uroot -pwestos -e "CREATE database westos;" ##先建库
mysql -uroot -pwestos westos < /mnt/westos.sql ##导入
- 恢复2
vim /mnt/westos.sql ##编辑备份文件
CREATE DATABASE westos; ##在备份文件里建库
USE westos;
mysql -uroot -pwestos < /mnt/westos.sql ##导入
实验: 备份数据库数据到指定文件,删除库,通过备份数据恢复库
详细步骤:
mysqldump -uroot -pwestos westos > /mnt/westos.sql ##备份
mysql -uroot -pwestos -e "DROP DATABASE westos;" ##删除库westos
mysql -uroot -pwestos -e "SHOW DATABASES;" ##查看数据库名称
恢复1: ##命令行方式
mysql -uroot -pwestos -e "CREATE database westos;" ##先建库
mysql -uroot -pwestos westos < /mnt/westos.sql ##导入
mysql -uroot -pwestos -e "DROP DATABASE westos;" ##重新删除
恢复2: ##编辑备份文件方式
vim /mnt/westos.sql ##编辑备份文件
///
CREATE DATABASE westos; ##在备份文件里建库
USE westos;
///
mysql -uroot -pwestos < /mnt/westos.sql ##导入
mysql -uroot -pwestos -e "SELECT * FROM westos.linux;" ##查看指定表中数据
#方法一:命令行方式恢复
#方法二:在备份文件里写入建库,进入库的命令,然后恢复数据
七、phpmyadmin图形模式管理数据库
可以通过下载图形软件来管理数据库,但是当批量管理时,图形模式效率还是较低
###westosa
dnf install httpd php php-mysqlnd -y ##下载服务与插件
systemctl enable --now httpd ##打开http服务
firewall-cmd --permanent --add-service=http ##使火墙允许http服务访问
firewall-cmd --reload
wget http://172.25.254.250/software/phpMyAdmin-3.4.0-all-languages.tar.bz2 ##下载软件
tar jxf phpMyAdmin-3.4.0-all-languages.tar.bz2 -C /var/www/html/ ##解压到指定位置
cd /var/www/html/
ls
mv phpMyAdmin-3.4.0-all-languages/ mysqladmin ##重命名
cd mysqladmin
cp config.sample.inc.php config.inc.php ##复制模板
###真机
firefox http://172.25.254.109/mysqladmin ##登录
#图形管理界面
八、用户授权
CREATE USER lee@localhost identified by 'lee'; ##只能用本地登录
CREATE USER westos@'%' identified by 'westos'; ##可以通过网络或本地登录
GRANT INSERT,SELECT ON westos.* TO lee@localhost; ##给本地用户lee授权
SHOW GRANTS for lee@localhost; ##查看授权
REVOKE INSERT,SELECT ON westos.* FROM lee@localhost; ##关闭授权
DROP user lee@localhost; ##删除用户
- 实验:
建立两个用户,一个只能本地登录,另一个可以使用网络登录,在root用户下给两个用户授权,给过授权的用户可以查看数据库的信息,没有授权的则不能。 - 步骤:
##建立用户
CREATE USER lee@localhost identified by 'lee';
CREATE USER westos@'%' identified by 'westos';
vim /etc/my.cnf.d/mariadb-server.cnf
///
#skip--networrking=1 ##注释掉,关闭数据库的开放端口,加强其安全性
///
systemctl restart mariadb.service
##授权管理(root下管理)
mysql -uroot -pwestos ##登录root用户
#westos用户授权
SHOW GRANTS FOR westos@'%'; ##查看授权
GRANT INSERT,SELECT ON westos.* TO westos@'%'; ##给westos授权,此时可在另一个shell里登录查看
SHOW GRANTS FOR westos@'%';
REVOKE INSERT,SELECT ON westos.* FROM westos@'%'; ##取消授权
SHOW GRANTS FOR westos@'%';
#lee用户授权
SHOW GRANTS FOR lee@localhost;
GRANT INSERT,SELECT ON westos.* TO lee@localhost; ##给lee授权,此时可在另一个shell里登录查看
REVOKE INSERT,SELECT ON westos.* FROM lee@localhost;##取消授权
##删除用户
DROP user lee@localhost;
DROP user westos@'%';
##测试:
可以在另一个shell登录查看
mysql -uwestos -p -h172.25.254.109 ##通过网络可以登录
SHOW DATABASES; ##查看数据库信息
mysql -ulee -plee
#建立用户westos
,lee
#登录westos用户
#给westos用户
授权,可以查看westos库
的信息,取消授权
#登录westos用户
,查看westos库
#给lee 用户
授权,取消授权,删除用户
#登录lee用户
,查看westos库