Centos之数据库基础

前言

以前已经学过MySQL基础语法和最基本使用,在Linux课上再次学习了MySQL,学的内容涉及的比较多,于是再次总结一下:

相关概念

在这里插入图片描述

关系型数据库和非关系型数据库

关系型数据库:SQLServer、Oracle、MySQL、DB2、SQLite等
非关系型数据库:MongoDB、Redis、NoSQL、Memcache等

  • 关系型数据库:指采用了关系模型来组织数据的数据库。简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。
  • 非关系型数据库:非关系型数据库严格,上说不是一-种数据库,是一种数据结构化储存方法的集合。
数据库组成

数据库:存储数据
数据库管理系统(DBMS) :
用户管理数据库的的程序,维护数据库的安全、完整、可靠性
关键词: 数据库、数据表、记录、字段、主键… .

安装MySQL

安装MySQL

yum -y install mysql mysql-server

在这里插入图片描述
开启服务

service mysqld start

在这里插入图片描述
查看mysql进程开启情况

ps -elf | grep mysqld

在这里插入图片描述
查看开放端口,mysql使用3306端口

netstat -anpt

在这里插入图片描述
无密码登录mysql

mysql

在这里插入图片描述
mysql设置密码并登录

mysqladmin -u root password 'qwzf123'
mysql -u root -p

在这里插入图片描述

MySQL基础1

1.SQL基础查看命令
show databases; #查看数据库
use mysql; #使用mysql数据库
show tables;#查看表
describe user; #查看表结构,也可使用:desc 表名;

在这里插入图片描述
在这里插入图片描述

2.创建数据库
show databases; #查看数据库
create database mydata; #创建mydata数据库
create database test123; #创建test123数据库
show databases;
drop database test123; #删除test123数据库
show databases;

在这里插入图片描述

3.创建数据表

(1)创建users表

use mydata;
create table users(id int,name char(15),sex enum('male','female'),tel char(15)); #创建users表
describe users; #查看表结构

在这里插入图片描述
声明主键
users表忘了声明主键,用下面方式声明

alter table users add primary key(id);
#声明之后,变成了非空

(2)创建yuanxi表
在这里插入图片描述

create table yuanxi(name char(30),id tinyint unsigned primary key,stunum int,teachernum int); #创建yuanxi表,同时声明id为主键
describe yuanxi; #查看表结构

在这里插入图片描述
(3)创建sushe表

create table sushe(id char(7) not null,stunum tinyint unsigned,address char(30),sex enum('male','female') default 'female',tel char(15) not null,primary key(id)); #创建sushe表,同时声明id为主键
describe sushe; #查看表结构

在这里插入图片描述
(4)创建id字增的test表

create table student(id int unsigned auto_increment,name char(15),age int,primary key (id));
describe sushe; #查看表结构
4.插入记录

(1)插入单条记录

insert into users(id,name,sex,tel) values(1,'qwzf','male','15093000000');
insert into users(id,name,sex,tel) values(2,'wmm','male','15193000000');
insert into users(id,name,sex,tel) values(3,'xiaowang','male','13983000000');
insert into users values(4,'qqq','female','18983000000');

查看记录

select * from users;

在这里插入图片描述
成功插入记录。
(2)插入多条记录

insert into users values(5,'admin','female','18383000000'),(6,'qwzf1024','male','13583000000');

查看记录

select * from users;

在这里插入图片描述
成功插入两条记录

5.修改记录
update users set id=8 where name='wmm';
select * from users;#查看记录

在这里插入图片描述
成功将name为wmm的记录的id字段修改为8

6.删除记录
delete from users where name='xiaowang';
select * from users;#查看记录

在这里插入图片描述
成功删除name为xiaowang的记录

实验1

新建数据库shuku,创建表books,设置序号、书名、作者、价格、发布日期、说明,第几集等字段:

create database shuku;
show databases;
use shuku;
#创建books表,设置序号、书名、作者、价格、发布日期、说明,集数。同时集数添加auto_increment属性设为自动分配,并且将集数设置成主键
create table books(xuhao char(20),bookname char(30),author char(15),price float,riqi date,shows char(100),jishu int unsigned auto_increment,primary key (jishu));

在这里插入图片描述
a、不指定字段名称,插入第一集的书籍

#不指定字段名,插入一条记录
insert into books values(1001,'Linux','gao jun feng',89.5,'2016-02-01','Linux study',1);
select * from books;

在这里插入图片描述
b、同时插入多条数据(不指定集数,自动分配) auto_increment

#插入多条记录,不指定集数,自动分配
insert into books(xuhao,bookname,author,price,riqi,shows) values(1002,'jisuanjiwangluo','xie xi ren',49.8,'2015-04-03','wangluomoxing study'), (1003,'caozuoxitong','wang song jia',39.5,'2015-06-04','study caozuoxitong'), (1004,'gai lv lun','tang xiao dan',35.8,'2016-08-23','math study'), (1005,'Python','yin li shuang',63.5,'2018-04-20','study Python'), (1006,'Web anquan','niu yong',0,'2019-08-20','Web anquan gongfang');
select * from books;

在这里插入图片描述
c、修改第2集到第5集的作者

update books set author='qwzf' where jishu between 2 and 5;
select * from books;

在这里插入图片描述
d、将第三集的价格改为0

update books set price=0 where jishu=3;
select * from books;

在这里插入图片描述
e、删除价格为0的书籍

delete from books where price=0;
select * from books;

在这里插入图片描述
好了,实验完毕。

MySQL基础2

1、实验准备

之前已经安装过mysql并设置了密码。现在,启动和登录即可

service mysqld start
mysql -u root -p
#密码qwzf123

在这里插入图片描述
为了今天的实验,先建一个数据库和表

create database qwzf;
show databases;
use qwzf;
create table users (id int unsigned not null auto_increment,name char(10) not null default ' ',age int not null default 0,info char(50) null,primary key (id));
describe users;

在这里插入图片描述

2、alter
alter 更改字段及其属性
rename 更改表名
modify 更改数值
change 更改字段
add 添加新字段
first 添加字段至第一行
after 添加字段至任意行后
drop 删除字段
modify 调换字段顺序
alter table users rename ps; #更改表名

在这里插入图片描述

alter table ps modify name char(20); #改字段数值

在这里插入图片描述

alter table ps change info information char(50); #更改字段名

在这里插入图片描述

alter table ps change information info char(40) not null; #更改字段名和属性

在这里插入图片描述

alter table ps add shijian time; #添加新字段及指定类型

在这里插入图片描述

alter table ps add nian year first; #设置添加字段到第一个字段

在这里插入图片描述

alter table ps add sex char(1) after id; #添加字段到id字段后

在这里插入图片描述

alter table ps drop nian; #删除字段

在这里插入图片描述

alter table ps modify age int(11) unsigned not null after sex;#age和name调换顺序

在这里插入图片描述

3、登录mysql方法
mysqldump -u root -p --all-databases > 1.sql #备份数据库
mysql -u root -p #本地登录
#使用另一台centos安装mysql客户端,远程登录服务端
yum -y install mysql #客户端安装mysql
mysql -u root -p -h 192.168.201.137 #客户端远程登录msql服务器

在这里插入图片描述
发现不能连接mysql服务器,于是关闭服务器的防火墙和selinux,再远程登录

iptables -F
setenforce 0

在这里插入图片描述
发现未授权,于是在服务端授权一下(授权一个普通用户即可)

#服务端授权远程登录
mysql -u root -p
grant select,drop on qwzf.* to wmm@192.168.201.139 identified by '123456';

在这里插入图片描述

#客户端远程连接
mysql -u wmm -p -h 192.168.201.137 -P 3306

在这里插入图片描述
验证权限,发现和之前授权的一样

show databases;
use qwzf;
select * from ps; #成功
create database ww; #失败
drop table ps; #成功

在这里插入图片描述
导入sql文件

mysql -u root -p < 1.sql

在这里插入图片描述

grant all on *.* to qwz@'%' identified by '123456';
flush privileges; #刷新权限
mysql -u qwz -p -h 192.168.201.137 -P 3306

在这里插入图片描述
在这里插入图片描述

mysql -u 用户 -p -h 主机 -P 端口
grant 权限 on 数据库.数据表 to 用户@地址列表 identified by '密码';
权限 all表示所有权限
地址列表可用%代表所有 不可用*

在windows上使用mysql管理工具Navicat for MySQL连接(因为之前已经用过,这里直接连)
在这里插入图片描述
在这里插入图片描述

4、MySQL日志管理

一、种类:

1.错误日志:
服务器启动和关闭过程中的信息
服务器运行过程中的错误信息
事务调度器运行一个时间时产生的信息
从服务器上启动从服务器进程时产生的信息
2.查询日志,一般查询日志:#一般情况下不启用
3.慢查询日志
4.二进制日志
5.中继日志
主从同步:将主服务器上的二进制文件复制到本地的某些日志中
6.事务日志
记录innodb等支持事务的存储引擎执行事务时产生的日志
ISAM NYISAM
INNODB

查看所有日志变量

show global variables like '%log%';

在这里插入图片描述
查看错误日志存放位置

show global variables like '%log_error%';

在这里插入图片描述
查看是否启用错误日志

ps -elf | grep mysqld
vim /etc/my.cnf

在这里插入图片描述
在这里插入图片描述
是否使用警告信息

show global variables like '%log_warning%';

在这里插入图片描述
查看一般查询日志存在地方和是否开启

show global variables like '%general_log%';

在这里插入图片描述
开启一般查询日志

vim /etc/my,cnf
general_log=ON|OFF #开启或关闭
general_log_file= #设置该日志文件存放位置
log=ON|OFF #是否启用所有日志
log_ouput=FILE|TABLE|NONE #将日志信息可存在文件或数据表或不启用,启用两个用,分开

慢查询日志

slow_query_log=ON|OFF #开启或关闭
slow_query_log_file= #设置该日志文件存放位置
long_query_time= #设置一个慢查询时间

二进制日志

vim /etc/my.cnf
  log-bin=mysqld-binlog

service mysqld restart
cd /var/lib/mysql/
vim mysqld-binlog.000001

在这里插入图片描述
在这里插入图片描述

create database qq;
show binlog events in 'mysqld-binlog.000001';

在这里插入图片描述
显示了所有操作,并且是实时更新的。

show binary logs;

在这里插入图片描述
随着操作的增多,File_size会越来越大。
限制单个日志文件最多存放大小

vim /etc/my.cnf
 max_binlog_size=200M
service mysqld restart
#在mysql里执行多个操作,然后查看日志文件
show binary logs;

在这里插入图片描述
在这里插入图片描述
会发现限制大小有问题(应该是默认单位的问题,单位使用M就没问题了)后,日志文件个数增加了。

5、日志服务器lamp+rsyslog+loganalyzer
1.服务器端安装与配置lamp和rsyslog

查看与关闭防火墙

iptables -F #关闭防火请
setenforce 0 #关闭selinux
iptables -L #查看防火墙是否关闭
getenforce #查看selinux是否关闭

安装lamp

yum -y install httpd
yum -y install mysql* php*

在这里插入图片描述
在这里插入图片描述
开启服务

service httpd start
service mysqld start
chkconfig httpd on
chkconfig mysqld on

在这里插入图片描述
在这里插入图片描述
配置mysql密码并测试

mysqladmin -uroot password '123456'

测试mysql能否登录

mysql -u root -p

在这里插入图片描述
写入php文件,并访问测试

cd /var/www/html
vim index.php

依旧是写一个查看phpinfo信息的php文件

<?php phpinfo(); ?>

在这里插入图片描述
在这里插入图片描述
物理机访问一下,发现没有问题
在这里插入图片描述
安装日志管理软件
检查是否安装rsyslog

rpm -qa | grep rsyslog

发现已经安装过了。然后安装与mysql协同工作的rsyslog-mysql

yum -y install rsyslog-mysql

在这里插入图片描述
将安装rsyslog-mysql产生的createDB.sql导入mysql数据库里

cd /usr/share/doc/rsyslog-mysql-5.8.10/
ls
mysql -u root -p < createDB.sql

在这里插入图片描述
导入成功。进入到mysql查看一下是否真的导入成功

mysql -u root -p

show databases;
use Syslog;
show tables;

在这里插入图片描述
发现sql文件真的导入成功。
创建用户管理导入的数据库和数据表

mysql -u root -p
grant all on Syslog.* to rsyslog@'%' identified by '123456';
flush privileges;

在这里插入图片描述
配置rsyslog的主配置文件

vim /etc/rsyslog.conf
$ModLoad ommysql #添加ommysql模块
#ommysql模块,允许通过本地用户:rsyslog密码:123456访问Syslog数据库(这是一个授权操作)
*.* :ommysql:localhost,Syslog,rsyslog,123456

$ModLoad immark
$ModLoad imudp #开启imudp模块,用来支持udp协议
$UDPServerRun 514 #指定运行时的端口号

在这里插入图片描述
重启rsyslog服务

service rsyslog restart

在这里插入图片描述

2.客户端进行配置与测试rsyslog

查看是否安装rsyslog,发现也已经安装

rpm -q rsyslog

配置rsyslog主配置文件

vim /etc/rsyslog.conf

跳到文件内容最后边Shift+g,然后添加以下内容:

#将所有日志提交到192.168.201.137服务器
*.* @192.168.201.137

在这里插入图片描述
重启rsyslog服务

service rsyslog restart

修改bashrc文件(bashrc文件,表示切换shell时应用该文件内容的配置)

vim /etc/bashrc

添加全局变量,当客户端产生操作记录的日志信息,以什么样的格式传到服务器

export PROMPT_COMMAND='{ msg=$(history 1 | {read x y;echo $y;});logger "[euid-$(whoami)]":$(who am i):[`pwd`]"$msg"; }'

在这里插入图片描述
在这里插入图片描述
为了使bashrc文件内容立即生效,使用source刷新一下

source /etc/bashrc

在这里插入图片描述
测试客户端文件能否传送到服务器端

#服务器端
tailf /var/log/messages
#客户端
grep root /etc/shadow

先查看服务器端
在这里插入图片描述
然后,客户端执行grep操作
在这里插入图片描述
再看服务器端,发现已经成功接收到客户端执行记录
在这里插入图片描述

3.服务器端安装与配置loganalyzer

首先,查看一下是否安装gcc,发现未安装,输入以下命令进行安装

yum -y install gcc*

然后换光盘,安装相关软件包
在这里插入图片描述

cd /media/20150609_112840/
cp loganalyzer-3.6.5.tar.gz /usr/src
cd /usr/src
tar -zxf loganalyzer-3.6.5.tar.gz
cd loganalyzer-3.6.5
cd src/

在这里插入图片描述
在网站根目录创建一个目录,并做一个文件同步将src下的文件同步到网站新建目录下

mkdir -p /var/www/html/loganalyzer
rsync -a /usr/src/loganalyzer-3.6.5/src/* /var/www/html/loganalyzer/
#查看一下是否同步成功
cd /var/www/html/loganalyzer/
ls

在这里插入图片描述
物理机访问一下,发现主配置文件丢失,点击here,进行安装
在这里插入图片描述
然后点击Next
在这里插入图片描述
在这里插入图片描述
发现没有config.php文件,然后从安装目录拷贝生成config.php文件的configure.sh文件,执行得到config.php文件

cd /usr/src/loganalyzer-3.6.5
cd contrib/
cp configure.sh /var/www/html/loganalyzer/
cd /var/www/html/loganalyzer/
chmod a+x configure.sh
./configure.sh
ls

在这里插入图片描述
点击ReCheck
在这里插入图片描述
发现成功找到了config.php,然后点Next
在这里插入图片描述
然后配置以下选项(数据库名、用户名、用户密码),然后点Next
在这里插入图片描述
在这里插入图片描述
发现连接数据库失败,之前用的%,使用下面localhost。然后就成功解决了
在这里插入图片描述
然后继续点击Next
在这里插入图片描述
点击Next
在这里插入图片描述
然后创建一个管理员,Next
在这里插入图片描述
然后设置信息源
在这里插入图片描述
点击Finish!
在这里插入图片描述
然后输入管理员用户和密码,可以看到本地主机的一些信息
在这里插入图片描述
在客户端执行一条echo命令,然后看一下日志服务器记录
在这里插入图片描述
发现日志
在这里插入图片描述
调一下颜色
在这里插入图片描述
更详细的使用,有待于进一步学习。到此为止,实验进行完毕

后记

总算做完了。主要学习了常见SQL语句的使用和alter语句的使用。也学习了远程登录mysql,以及使用备份和日志管理,同时也学习了日志服务器的搭建(lamp+rsyslog+loganalyzer)。收获很大,继续努力!!!

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值