samba和mysql

随笔:
真正使用wordpress服务的是php程序,要授权给的是谁?
nfs只使用于中小型企业,因为性能原因;
nfs是内核级的文件系统;而ftp是由服务提供的,并不是内核级的;
UNC:通用命名规范;前面是ip后面是共享文件夹的名字(可以是虚拟的);和nfs挂载时不
同???
nfs挂载到apache上,权限如何安排,要建立相同的账户吗??? 51分视频时
nfs、ftp、smb的下载性能??? 在第三个视频的15分钟左右开始
windows板块:
dir 显示当前目录的文件或目录
点击我的电脑,然后点击侧栏网络,可以显示出各个在局域网中的主机;原理是开机时会自
动将计算机名注册到网络中;但是这种注册延迟大;
nbtstat -n 显示NetBOIS本地名称列表;现在NetBOIS在windows上已经停止使用了;
net share 查看共享
net share winsh=d:\BaiduNetdiskDownload 创建共享;将winsh改为winsh$就可以将共享
的文件夹隐藏起来;直接\172.18.101.3\是显示不出的,要加上win$才可以访问;
net share Users /del 删除共享设置,并不是删除共享文件夹;
\172.18.101.3\winsh 创建的共享可以在点击我的电脑打开后地址栏输入此UNC进行访问
在windows上默认c、d、g盘都是共享的,如果知道管理员账号密码就可以直接访问;
net user administrator /active:yes 开启管理员账户
net user test magedu /add win7上可以创建用户
Windows Mobile(简称:WM)是微软针对移动设备而开发的操作系统。
Windows CE是微软的嵌入式操作系统主要的一种,面世于1996年。可用于各种数字设
备,如机顶盒、医疗设备、PDA、导航设备、数字电视等;
设置文件夹共享只需点击右键设置高级共享...
右击我的电脑-->管理,看不到本地用户和组,咋回事??
C:\Windows\System32\drivers\etc下的lmhosts.sam复制为lmhosts文件,进行解析,然后进
行在windows命令行输入:ping remotehost进行解析;
netstat -nt|findstr 445 查看共享的连接;如果有,可以右击我的电脑--管理--共享--会话和
打开的文件查看具体在访问什么
ping -a 172.18.101.3 进行反向解析出主机名
nbtstat -a 172.18.101.3 反向解析出主机名
windows中唯一标识用户的是sid;
net use 查看远程连接
net use \192.168.62.70\IPC$ /del 删除连接记录

今天涉及到的命令:

1、locate cifs.ko 查找模块
2、rpm -qa|grep samba
3、rpm -ql samba-client
4、smbclient -L 172.18.101.3 查看机器上的 共享
5、smbclient -L 172.18.101.3 -Utest 查看机器上的共享
6、smbclient //172.18.101.3/winsh -Utest 从linux中以test用户的身份访问windows的共享
7、mount -o username=test,password=magedu //172.18.101.3/winsh /mnt/ 挂载需要cifs-
utils包被安装;
8、echo '//172.18.101.3/winsh /mnt/ cifs username=test,password=magedu 0 0' >> /etc/fstab
进行共享的永久挂载;
9、由于/etc/fstab文件任何人都可以读取,故而为了安全需要这样挂载
vim /etc/smbuser.txt
username=test
password=magedu
chmod 600 /etc/smbuser.txt 设置权限保护
vim /etc/fstab
//172.18.101.3/winsh /mnt/ cifs credentials=/etc/smbuser.txt
0 0
umount /mnt
mount -a
10、rpm -ql samba-common 显示服务配置文件;其中/etc/samba/lmhosts是netbois名称解析的
文件
11、service nmb start 开启nmb服务,用于Netbois名称解析
12、testparm /etc/samba/smb.conf 将文件的注释去掉,只保留有效部分

1、SAMBA服务简介

SMB:Server Message Block服务器消息块,IBM发布,最早是DOS网络文件共享协议;后来开
发者使它在unix上也可以使用;由此出项了dos和unix之间的通讯问题;由于注册时SMB已经被
使用了,故采用SAMBA这个名字;
Cifs:common internet file system,微软基于SMB发布 ,和smb差不多;
SAMBA:1991年Andrew Tridgell,实现windows和UNIX相通
SAMBA的功能:
• 共享文件和打印,实现在线编辑
• 实现登录SAMBA用户的身份认证;比nfs的基于ip的控制安全性强;
• 可以进行NetBIOS名称解析
NetBIOS:NetBIOS 名称包含16 个字节,每个名称的前15个字节是用户指定的,表示
定义的计算机名,第16个字节表示服务名;
• 外围设备共享
计算机网络管理模式:
• 工作组WORKGROUP:计算机对等关系,帐号信息各自管理
• 域DOMAIN:C/S结构,帐号信息集中管理,DC,AD ;账号放到域控制器
注意:samba是内核级的;是相当于将linux模拟成windows的一台主机,而可以被访问
2、SAMBA介绍

相关包:
samba 提供smb服务
samba-client 客户端软件
samba-common 通用软件
cifs-utils smb客户端工具;里面有挂载的功能
samba-winbind 和AD相关 ????
相关服务进程:
smbd 提供smb(cifs)服务 TCP:139,445
nmbd NetBIOS名称解析 UDP:137,138
主配置文件:/etc/samba/smb.conf
帮助参看:man smb.conf
语法检查: testparm [-v] [/etc/samba/smb.conf]
客户端工具:smbclient,mount.cifs
注意:nmb.service是netbois名称解析时用到;smb是服务名;smba是包名;smbd是程序名

3、SAMBA服务器配置
/etc/samba/smb.conf smb服务的配置文件;7上有example文件参考;6上则在配置文件中有
注释,也方便看;
smb.conf继承了.ini文件的格式,用[ ] 分成不同的部分
全局设置:
[global] 服务器通用或全局设置的部分
特定共享设置:
[homes] 用户的家目录共享;默认设置
[printers] 定义打印机资源和服务
[sharename] 自定义的共享目录配置
其中:#和;开头的语句为注释,大小写不敏感
宏定义:
%m 客户端主机的NetBIOS名
%M 客户端主机的FQDN
%H 当前用户家目录路径
%U 当前用户用户名
%g 当前用户所属组
%h samba服务器的主机名
%L samba服务器的NetBIOS名
%I 客户端主机的IP
%T 当前日期和时间
%S 可登录的用户名
smbclient -L 192.168.62.70 匿名登录直接不用输入密码,回车即可登录

4、SAMBA服务器全局配置

workgroup 指定工作组名称
server string 主机注释信息
smbclient -L 192.168.62.70 匿名登录可以查看注释和工作组名称
netbios name 指定NetBIOS名
ping yongserver 在win10命令行输入以验证设置的正确性;前提是nmb服务必须重启
interfaces 指定服务侦听接口和IP
hosts allow 可用“,” ,空格,或tab分隔,默认允许所有主机访问,也
可在每个共享独立配置,如在[global]设置,将应用并覆盖所有共享设置
IPv4 network/prefix: 172.25.0.0/24 IPv4前缀: 172.25.0.
IPv4 network/netmask: 172.25.0.0/255.255.255.0
如果不启用此设置,就默认都可以访问
主机名: desktop.example.com
以example.com后缀的主机名: .example.com
示例:
hosts allow = 172.25.
hosts allow = 172.25. .example.com
hosts deny 拒绝指定主机访问

5、SAMBA服务器全局配置

config file=/etc/samba/conf.d/%U 用户独立的配置文件
Log file=/var/log/samba/log.%m 不同客户机采用不同日志;只记录失败异常的日志
max log size=50 日志文件达到50K,将轮循rotate,单位KB
log level 2 日志级别越高显示的越详细;
Security三种认证方式:
share:匿名(CentOS7不再支持)
user:samba用户(采有linux用户,samba的独立口令)
domain:使用DC(DOMAIN CONTROLLER)认证
passdb backend = tdbsam 密码数据库格式
实现samba用户:
包:samba-common-tools
工具:smbpasswd pdbedit
samba用户须是Linux用户,建议使用/sbin/nologin

6、管理SAMBA用户

添加samba用户
smbpasswd -a <user>
pdbedit -a -u <user>
修改用户密码
smbpasswd <user>
删除用户和密码:
smbpasswd –x <user>
pdbedit –x –u <user>
查看samba用户列表:
/var/lib/samba/private/passdb.tdb
pdbedit –L –v
查看samba服务器状态
smbstatus
测试:
yum install samba 安装服务包
cp smb.conf smb.conf.bak 先进行备份
vim /etworkgroup = WANGGROUP
server string = Samba wang Server Version %v
netbios name = YONGSERVER
interfaces = lo eth0
hosts allow = 127. 192.168.62.c/samba/smb.conf

log file = /var/log/samba/log.%I
log level=2
重启或重新加载服务生效
service smb restart
service smb reload
ss -ntlu|grep 137 查看137和138端口是否开启以用来进行NetBois名称解析
useradd -r -s /sbin/nologin smb1 创建系统账户
useradd -r -s /sbin/nologin smb2
useradd -r -s /sbin/nologin smb3
smbpasswd -a smb1
smbpasswd -a smb2
smbpasswd -a smb3
pdbedit -L 查看创建好的用户数据库
pdbedit -L -v 查看用户列表信息
smbpasswd smb2 修改用户smb2的密码
service smb restart
\192.168.62.70\ 在资源管理中输入UNC进行访问
7、配置目录共享

每个共享目录应该有独立的[ ]部分
[共享名称] 远程网络看到的共享名称
comment 注释信息
path 所共享的目录路径
public 能否被guest访问的共享,默认no,和guest ok 类似;yes匿名登录是采用nobody
进行登录的;
browsable 是否允许所有用户浏览此共享,默认为yes,no为隐藏;隐藏后谁都看不见;但
是合法的用户可以通过输入共享名进行访问;
writable=yes 可以被所有用户读写,默认为no;yes时任何人都可以读写;no时可读不
可写;
read only=no 和writable=yes等价,如与以上设置冲突,放在后面的设置生效,默认只
读 ;
write list 三种形式:用户,@组名,+组名,用,分隔 ;写权限修改文件的内容有问题;
如writable=no,列表中用户或组可读写,不在列表中用户只读
valid users 特定用户才能访问该共享,如为空,将允许所有用户,用户名之间用空格;
但是依然可以查看到有这个共享;
分隔
测试:
vim /etc/samba/smb.conf
[share1]
path=/data/smbshare
writable = yes
#valid users = smb1,smb2
#browsable = no
#public = yes
service smb reload
验证:
smbclient //192.168.62.70/share1 -U smb1%123789 验证valid users,即是否是
合法的用户;
smbclient //192.168.62.70/share1 -U smb3%123789 直接进入目录进行访问
smbclient //192.168.62.70/share1 用于测试最后一项;是否可以直接匿名访问;
出现输入密码的提示后,直接回车跳过;
注意:public验证的时候要输入全路径(包括共享名)

8、基于特定用户和组的共享
前提:目录本身必须有访问权限
编辑/etc/samba/smb.conf
[share]
path = /app/dir
valid users=wang,@admins
writeable = no
browseable = no
测试:
groupadd staff
usermod -aG staff smb1
usermod -aG staff smb3
vim /etc/samba/smb.conf
[share1]
path=/data/smbshare
valid users = smb1,smb2,smb3
write list = @staff
重启服务生效
验证:
smbclient //192.168.62.70/share1 -U smb2%123789
put f1 上传失败
rm f1 删除f1文件失败
smbclient //192.168.62.70/share1 -U smb3%123789
put f1 上传成功
rm f1 删除f1文件成功
注意:如果某一个文件的属主为a,且其它用户和属组没有该文件的写权限,则对目录有写
权限的b用户可以删除文件,但是不能成功修改文件;即使修改后保存文件,那么也是另外
建立了一个文件将内容写进去,而不是原来的那个文件被修改了;删除文件是只要对目录有
写权限就可以进行;
mount //192.168.62.70/share1 /mnt/ -o username=smb3,password=123789 挂

注:根据测试,nfs性能强于smb,smb的性能强于ftp
9、SMB客户端访问

UNC路径: Universal Naming Convention,通用命名规范
格式:\sambaserver\sharename
终端下使用smbclient登录服务器
smbclient -L instructor.example.com
smbclient -L instructor.example.com -U wang

cd directory
get file1
put file2
smbclient //instructor.example.com/shared -U wang
可以使用-U选项来指定用户%密码,或通过设置和导出USER和
PASSWD环境变量来指定

10、挂载CIFS文件系统

手动挂载
mount -t cifs -o user=wang,password=magedu
//server//shared /mnt/smb
开机自动挂载
• vim /etc/fstab 可以用文件代替用户名和密码的输入
//server/homes /mnt cifs credentials=/etc/smb.txt 0 0
• vim /etc/smb.txt
username=wang
password=password
• chmod 600 /etc/smb.txt

11、实验:实现SMB共享

一、在samba服务器上安装samba包

yum -y install samba

二、创建samba用户和组

groupadd -r admins
useradd -s /sbin/nologin -G admins wang
smbpasswd -a wang
useradd -s /sbin/nologin mage
smbpasswd -a mage

三、创建samba共享目录,并设置SElinux

mkdir /testdir/smbshare
chgrp admins /testdir/smbshare
chmod 2775 /testdir/smbshare 在此文件夹下建立新文件默认属组为admins
semanage fcontext -a -t samba_share_t '/testdir/smbshare(/.*)?'
restorecon -vvFR /testdir/smbshare

四、samba服务器配置

vim /etc/samba/smb.conf
security = user
passdb backend = tdbsam
[share]
path = /testdir/smbshare
write list = @admins
systemctl start smb nmb
systemctl enable smb nmb
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload

五、samba客户端访问

安装包
yum -y install cifs-utils
用wang用户挂载smb共享并访问
mkdir /mnt/wang
mount -o username=wang //smbserver/share /mnt/wang
echo "Hello wang" >/mnt/wang/wangfile.txt
用mage用户挂载smb共享并访问
mkdir /mnt/mage
mount -o username=mage //smbserver/share /mnt/mage
touch /mnt/mage/magefile.txt

六、多用户SMB挂载

SAMBA共享默认只支持同时用一个用户挂载SMB共享;当访问挂载时都以wang的身份
访问挂载点只能使用wang的权限;
CentOS7中可启用多用户挂载功能 客户端挂载samba共享目录后,在客户端登录的不
同用户 ;
访问同一个samba的挂载点,可获得不同权限

12、实验:多用户SMB挂载

一、samba服务器配置

• yum install samba
• mkdir /multiuser
• vim /etc/samba/smb.conf
[smbshare]
path=/multiuser
writable=no
write list= @admins

二、samba服务器创建samba用户

useradd –s /sbin/nologin smbuser
smbpasswd –s smbuser
useradd –s /sbin/nologin –G admins wang
smbpasswd –a wang
useradd –s /sbin/nologin mage
smbpasswd –a mage

三、samba服务器设置目录权限和SELinux

对wang,admins组分配目录读写权限
chmod 777 /testdir/multiuser
或者
setfacl –m u:wang:rwx /testdir/multiuser
setfacl –m g:admins:rwx /testdir/multiuser
设置SELinux标签:
semanage fcontext -a -t samba_share_t '/testdir/multiuser (/.*)?'
restorecon /testdir/multiuser

四、samba客户端启用多用户挂载

• yum -y install cifs-utils
• mkdir /mnt/smb
• echo 'username=smbuser' >/etc/multiuser
• echo 'password=centos' >>/etc/multiuser
• chmod 600 /etc/multiuser
• 以多用户方式挂载:
• vim /etc/fstab
//smbserver/smbshare /mnt/smb cifs credentials=/etc/multiuser,multiuser 0 0
• mount -a

五、在samba客户端用实现多用户访问

useradd wang;useradd mage
用root访问
ls /mnt/smb; touch /mnt/smb/root.txt
用wang访问
ls /mnt/smb; touch /mnt/smb/wang.txt
cifscreds add –u wang smbserver
touch /mnt/smb/wang.txt
用mage访问
cifscreds add –u mage smbserver
ls /mnt/smb
touch /mnt/smb/mage.txt

测试:
服务器端配置
mkdir /app/share
chmod 777 /app/share
cd /etc/samba
cp smb.conf smb.conf.bak
vim smb.conf
[share]
path=/app/share
write list=@admins
useradd -r -s /sbin/nologin smb1
useradd -r -s /sbin/nologin smb2
useradd -r -s /sbin/nologin smb3
groupadd admins
usermod -aG admins smb2 只有smb2对文件夹有写的权限;
smbpasswd -a smb1
smbpasswd -a smb2
smbpasswd -a smb3
systemctl start smb

客户端配置
vim /etc/smbuser2.txt
username=smb1
password=123789
yum install cifs-utils
vim /etc/fstab
//192.168.62.63/share /mnt/samba cifs
credentials=/etc/smbuser2.txt,multiuser 0 0
mount -a
su - smb2
cd /mnt/samba
cifscreds add -u smb2 192.168.62.63 切换到服务器的另一个用户访问
touch a 可以创建文件(对文件夹有写权限)
exit
cd /mnt/samba
cifscreds add -u smb3 192.168.62.63 切换到服务器的smb3用户对文件夹访问权限
touch b 创建文件失败,没有权限
13、实验:实现图形化管理

一、在CentOS6(第二张光盘)上安装包

yum install samba-swat
二、配置swat服务

vim /etc/xinetd.d/swat
disable = no
port = 901
only_from = 127.0.0.1 此行改成172.16.0.0/16
service xinetd restart
chkconfig swat on
三、浏览器访问管理

http://127.0.0.1:901 以root用户登录
注意:commit changes后会自动重新加载配置,且自动 将/etc/samba/smb.conf中原有的注
释全删除

14、相关SELinux配置

SMB共享目录应设为samba_share_t安全上下文
semanage fcontext -a -t samba_share_t '/sharedpath(/.*)?'
restorecon -vvFR /sharedpath
SMB共享目录安全上下文也可设 public_content_t (只读)和 public_content_rw_t (读写).
要支持读写,SElinux布尔值smbd_anon_write必须启用
如用SMB网络共享samba服务器上的用户家目录,需在 samba服务器上启用布尔值
samba_enable_home_dirs
如需挂载远程SMB目录做为本地用户家目录,需在SMB客户 机上启用布尔值
use_samba_home_dirs

15、MySQL和MariaDB

官方网址:
https://www.mysql.com/
http://mariadb.org/
官方文档
https://dev.mysql.com/doc/
https://mariadb.com/kb/en/
版本演变:
MySQL:5.1 --> 5.5 --> 5.6 --> 5.7
MariaDB:5.5 -->10.0--> 10.1 --> 10.2 --> 10.3
注意:数据库引擎是插件式的,可以第三方添加;现在使用的innodb引擎和以前所使用的不是同
一个,版本变化太大,是Percona公司进行大量改进优化而来;

16、MariaDB的特性

插件式存储引擎:也称为“表类型”,存储管理器有多种实现版本,功能和特性可能均略有差别;
用户可根据需要灵活选择 ,Mysql5.5.5开始innoDB引擎是MYSQL表的默认引擎
MyISAM ==> Aria ;MyISAM不支持事务,数据库崩溃后很难恢复;加了一个安全性的表就
形成了Aria;
InnoDB ==> XtraDB ;
存储引擎比较:
https://docs.oracle.com/cd/E17952_01/mysql-5.5-en/storage-engines.html
单进程,多线程
诸多扩展和新特性
提供了较多测试组件
开源
注意:事务有四种特性为原子性、一致性、隔离性、持久性;即ACID;计算机磁盘的单位TB--
PB-EB..;数据库的容量不能太大,达到一定程度就需要进行拆分,防止影响数据库性能;当然也
可以买高性能的硬件来维持性能,但是代价很大;阿里的oceanbase数据库性能比mysql强大很
多;如在秒杀活动中以队列的形式减轻服务器并发数;

17、存储引擎

MyISAM引擎特点: (面试至少说出5点)
不支持事务
表级锁定
读写相互阻塞,写入不能读,读时不能写
只缓存索引 ,不缓存数据
不支持外键约束
不支持聚簇索引 (索引和数据放在一起)
读取数据较快,占用资源较少
不支持MVCC(多版本并发控制机制)高并发
崩溃恢复性较差
MySQL5.5.5前默认的数据库引擎
注意:MVCC即多版本并发控制机制是指多个事务由于并发执行而产生的顺序问题,多个事
务有的执行完毕,但是有的还没有执行结束,不具备顺序性;在一个表中,建立几个字段,
最后面有两个隐藏字段,记录创建此记录的事务编号和删除此记录的事务编号;当某个事务
要对此事务进行select操作时,如果删除此记录的事务先发生,那么此时这个执行查询操作
的事务就不能查询到这条记录;建立事务也是同理;这就是我对事务的多版本并发控制机制
的理解;
励志网站:http://jumpserver.org/
取版本号2位数

InnoDB引擎特点:
支持事务,适合处理大量短期事务
行级锁
读写阻塞与事务隔离级别相关
可缓存数据和索引
支持聚簇索引
崩溃恢复性更好
支持MVCC高并发
从MySQL5.5后支持全文索引
从MySQL5.5.5开始为默认的数据库引擎

18、存储引擎

MyISAM:
适用场景:只读(或者写较少,避免全表加锁)、表较小(可以接受长时间进 行修复操作)
使用MyISAM引擎时定义表后生成的表文件:
tbl_name.frm: 表格式定义 ,框架结构
tbl_name.MYD: 数据文件
tbl_name.MYI: 索引文件
注意;系统自带的数据库一般采用MyISAM引擎,因为没有太大的并发访问量;可以通过拷贝一个
表的这3个文件,就可以模拟实现备份,但是不能这么做,因为可能还有人在写数据;
数据库是基于表进行的;在创建数据库时并不会指定引擎

InnoDB:
InnoDB数据库文件
所有InnoDB表的数据和索引放置于同一个表空间中
表空间文件:datadir定义的目录下
数据文件:ibddata1, ibddata2, ...
每个表单独使用一个表空间存储表的数据和索引
启用:innodb_file_per_table=ON 启用此变量后每个新的表都有自己的数据和索
引;在/etc/my.cnf文件中进行定义,建议开启;开启后数据和索引放在一个文件
中;如/var/lib/mysql/hellodb2/students.ibd
两类文件放在数据库独立目录中
数据文件(存储数据和索引):tb_name.ibd /var/lib/mysql/ibdata1;所有数据
库的表的数据和索引都存放在这里,数据很大,影响性能;
表格式定义:tb_name.frm /var/lib/mysql/hellodb/*.frm

19、管理存储引擎

查看mysql支持的存储引擎:
show engines;
查看当前默认的存储引擎:
show variables like '%storage_engine%';
设置默认的存储引擎:
vim /etc/my.conf
[mysqld]
default_storage_engine= InnoDB;
查看库中所有表使用的存储引擎
Show table status from db_name;
查看库中指定表的存储引擎
show table status like ‘tb_name‘;
show create table tb_name;
设置表的存储引擎:
CREATE TABLE tb_name(... ) ENGINE=InnoDB; 创建表时指定引擎
ALTER TABLE tb_name ENGINE=InnoDB; 修改表的引擎

20、其它存储引擎

Performance_Schema:Performance_Schema数据库 ,用于存放数据库的性能信息;物理上存
在;
Memory :将所有数据存储在RAM中,以便在需要快速查找参 考和其他类似数据的环境中进行快
速访问。适用存放临时数据 。引擎以前被称为HEAP引擎
MRG_MyISAM:使MySQL DBA或开发人员能够对一系列相 同的MyISAM表进行逻辑分组,并将
它们作为一个对象引用。 适用于VLDB(Very Large Data Base)环境,如数据仓库
Archive :为存储和检索大量很少参考的存档或安全审核信息 ,只支持SELECT和INSERT操
作;支持行级锁和专用缓存区
Federated联合:用于访问其它远程MySQL服务器一个代理, 它通过创建一个到远程MySQL服
务器的客户端连接,并将查询 传输到远程服务器执行,而后完成数据存取,提供链接单独
MySQL服务器的能力,以便从多个物理服务器创建一个逻辑数 据库。非常适合分布式或数据集
市环境
BDB:可替代InnoDB的事务引擎,支持COMMIT、 ROLLBACK和其他事务特性
Cluster/NDB:MySQL的簇式数据库引擎,尤其适合于具有 高性能查找要求的应用程序,这类查
找需求还要求具有最高的 正常工作时间和可用性
CSV:CSV存储引擎使用逗号分隔值格式将数据存储在文本文 件中。可以使用CSV引擎以CSV
格式导入和导出其他软件和应 用程序之间的数据交换
BLACKHOLE :黑洞存储引擎接受但不存储数据,检索总是返回一个空集。该功能可用于分布
式数据库设计,数据自动复制,但不是本地存储 ;作为中间代理将数据从服务器上拷贝到其它机
器客户端;
example:“stub”引擎,它什么都不做。可以使用此引擎创 建表,但不能将数据存储在其中或从
中检索。目的是作为例子 来说明如何开始编写新的存储引擎
MariaDB支持的其它存储引擎:
OQGraph
SphinxSE
TokuDB
Cassandra
CONNECT
SQUENCE

21、MySQL中的系统数据库

mysql数据库:是mysql的核心数据库,类似于sql server中 的master库,主要负责存储数据库的
用户、权限设置、关键 字等mysql自己需要使用的控制和管理信息;
PERFORMANCE_SCHEMA:MySQL 5.5开始新增的数据库 ,主要用于收集数据库服务器性能参
数,库里表的存储引擎均 为PERFORMANCE_SCHEMA,用户不能创建存储引擎为
PERFORMANCE_SCHEMA的表 ;
information_schema数据库:MySQL 5.0之后产生的,一个 虚拟数据库,物理上并不存在。
information_schema数据库 类似与“数据字典”,提供了访问数据库元数据的方式,即数 据的数
据。比如数据库名或表名,列类型,访问权限(更加细 化的访问方式) ;

22、Mysql 客户端

mysql使用模式:
交互式模式:
可运行命令有两类:
客户端命令(在mysql中用help查看可以得到):
\h, help
\u,use
\s,status
!,system 如 ! ls /app
服务器端命令:
SQL, 需要语句结束符;
脚本模式:
mysql –uUSERNAME -pPASSWORD < /path/somefile.sql
mysql> source /path/from/somefile.sql

23、Mysql客户端

mysql客户端可用选项:
-A, --no-auto-rehash 禁止补全
-u, --user= 用户名,默认为root
-h, --host= 服务器主机,默认为localhost
-p, --passowrd= 用户密码,建议使用-p,默认为空密码
-P, --port= 服务器端口
-S, --socket= 指定连接socket文件路径 ;/var/lib/mysql/mysql.sock
-D, --database= 指定默认数据库 ;mysql -D mysql
-C, --compress 启用压缩
-e “SQL“ 执行SQL命令;mysql -e 'select from hellodb2.students;'
-V, --version 显示版本
-v --verbose 显示详细信息
--print-defaults 获取程序默认使用的配置
注意:进入数据库后是支持补全的,但是补全是区分大小写的
常用命令:
select
from students where name like 's%'; 查询表中以s开头的数据记录,不区分大小写
echo 'select * from hellodb2.students;'|mysql 在外面执行数据库命令

24、MariaDB程序

客户端程序:
mysql: 交互式的CLI工具
mysqldump: 备份工具,基于mysql协议向mysqld发起查询请 求,并将查得的所有数据转换
成insert等写操作语句保存文本文件中;
mysqladmin:基于mysql协议管理mysqld
mysqlimport: 数据导入工具
MyISAM存储引擎的管理工具:
myisamchk:检查MyISAM库 ;已经淘汰了
myisampack:打包MyISAM表,只读
服务器端程序
mysqld_safe
mysqld 获取默认设置:mysqld --print-defaults
mysqld_multi:多实例 ,示例:mysqld_multi --example
常用命令:
mysqladmin create testdb 利用工具在外面创建数据库
mysqladmin ping 查询数据库是否开启
mysqladmin drop testdb
mysqladmin shutdown 关闭服务;不要和正常的命令混用,防止不兼容

25、用户账号

mysql用户账号由两部分组成:
'USERNAME'@'HOST‘
说明:
HOST限制此用户可通过哪些远程主机连接mysql服务器
支持使用通配符:
% 匹配任意长度的任意字符
172.16.0.0/255.255.0.0 或 172.16.%.%
_ 匹配任意单个字符

26、socket地址

服务器监听的两种socket地址:
ip socket: 监听在tcp的3306端口,支持远程通信
unix sock: 监听在sock文件上,仅支持本机通信
如:/var/lib/mysql/mysql.sock)
说明:host为localhost,127.0.0.1时自动使用unix sock

27、服务器端配置

服务器端(mysqld):工作特性有多种配置方式
1、命令行选项:
2、配置文件:类ini格式
集中式的配置,能够为mysql的各应用程序提供配置信息
[mysqld]
[mysqld_safe]
[mysqld_multi]
[mysql]
[mysqldump]
[server]
[client]
格式:parameter = value
说明:_和- 相同
0,OFF,FALSE意义相同,1,ON,TRUE意义相同
破解mysql的root口令 跳过表????
/usr/libexec/mysqld --help --verbose|less 查看命令行选项的帮助

28、配置文件

配置文件:
后面覆盖前面的配置文件,顺序如下:
/etc/my.cnf Global选项
/etc/mysql/my.cnf Global全局选项
SYSCONFDIR/ my.cnf Global选项
$MYSQL_HOME/my.cnf Server-specific 选项
--defaults-extra-file= path 在启动时认为指定配置文件的路径;
~/.my.cnf User-specific 选项
获取可用参数列表:
mysqld --help --verbose
注意:推荐使用主配置与子配置文件设置,避免混乱

29、MairaDB配置

侦听3306/tcp端口可以在绑定有一个或全部接口IP上
vim /etc/my.cnf
[mysqld]
skip-networking=1 关闭网络连接,只侦听本地客户端, 所有和服务器的交互都通过一个socket
实现,socket的配置存放 在/var/lib/mysql/mysql.sock) 可在/etc/my.cnf修改
mysql -S /var/lib/mysql/mysql.sock 通过内部通讯文件进行本地的连接;默认
注意:可以在备份的时候使用,禁止外来连接

30、关系型数据库的常见组件

数据库:database
表:table
行:row
列:column
索引:index
视图:view
用户:user
权限:privilege
存储过程:procedure,无返回值
存储函数:function,有返回值
触发器:trigger
事件调度器:event scheduler,任务计划
四种语言:DDL数据定义语言、DML数据操纵语言、DCL数据控制语言、DQL数据查询语言

31、SQL JOINS

注意:full outer join在mysql是不支持的;内连接是有连接点记录显示出来;左外连接是没有联系的记录也显示出来;
命令:
select s.Stuid,s.name,c.Class from students as s inner join classes as c on
s.ClassID=c.ClassID; 左外连接的演示
elect s.Stuid,s.name,c.Class from students as s left join classes as c on s.ClassID=c.ClassID
where c.ClassID is null;

32、SELECT语句执行顺序

注意:
select count(stuid) from students group by gender having gender='F'; 利用性别分组查询学
生的数量;
select avg(age) from students group by gender having gender='F'; 利用分组查询平均数

数据库常用命令:

show create database mysql; 查看创建数据库的过程
show table status from mysql\G; 显示数据库的表的状态;\G表示进行竖列显示
source /root/hellodb_MyISAM.sql 在登录数据库后将数据库导入到系统中
mysql < hellodb_InnoDB.sql 在外面将数据库导入到数据库中
drop database hellodb; 删除数据库
show databases; 显示数据库列表
mysql -e 'show databases;' 在外面执行命令显示数据库列表
mysql -e 'drop database hellodb2;'
select version(); 显示当前的版本

复习:

sed -i.bak 's/MyISAM/InnoDB/g' hellodb_MyISAM.sql 搜索替换

练习:

导入hellodb.sql,以下操作在students表上执行
1、以ClassID分组,显示每班的同学的人数
2、以Gender分组,显示其年龄之和
3、以ClassID分组,显示其平均年龄大于25的班级
4、以Gender分组,显示各组中年龄大于25的学员的年龄之和
5、显示前5位同学的姓名、课程及成绩
6、显示其成绩高于80的同学的名称及课程;
7、求前8位同学每位同学自己两门课的平均成绩,并按降序排列
8、显示每门课程课程名称及学习了这门课的同学的个数
9、如何显示其年龄大于平均年龄的同学的名字
10、如何显示其学习的课程为第1、2,4或第7门课的同学的名字
11、如何显示其成员数最少为3个的班级的同学中年龄大于同班同学平均 年龄的同学
12、统计各班级中年龄大于全校同学平均年龄的同学

转载于:https://blog.51cto.com/angwoyufengtian/2126406

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值