sm702 发表于 2018-10-2 10:15:44

samba和mysql-myblog

  随笔:
  真正使用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-utilssmb客户端工具;里面有挂载的功能
  samba-winbind和AD相关 ????
  相关服务进程:
  smbd 提供smb(cifs)服务 TCP:139,445
  nmbd NetBIOS名称解析UDP:137,138
  主配置文件:/etc/samba/smb.conf
  帮助参看:man smb.conf
  语法检查: testparm[-v]
  客户端工具:smbclient,mount.cifs
  注意:nmb.service是netbois名称解析时用到;smb是服务名;smba是包名;smbd是程序名
  3、SAMBA服务器配置
  /etc/samba/smb.conf smb服务的配置文件;7上有example文件参考;6上则在配置文件中有
  注释,也方便看;
  smb.conf继承了.ini文件的格式,用[] 分成不同的部分
  全局设置:
   服务器通用或全局设置的部分
  特定共享设置:
   用户的家目录共享;默认设置
   定义打印机资源和服务
   自定义的共享目录配置
  其中:#和;开头的语句为注释,大小写不敏感
  宏定义:
  %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分隔,默认允许所有主机访问,也
  可在每个共享独立配置,如在设置,将应用并覆盖所有共享设置
  IPv4 network/prefix: 172.25.0.0/24IPv4前缀: 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>  log level   2   日志级别越高显示的越详细;
  Security三种认证方式:
  share:匿名(CentOS7不再支持)
  user:samba用户(采有linux用户,samba的独立口令)
  domain:使用DC(DOMAIN CONTROLLER)认证
  passdb backend = tdbsam 密码数据库格式
  实现samba用户:
  包:samba-common-tools
  工具:smbpasswdpdbedit
  samba用户须是Linux用户,建议使用/sbin/nologin
  6、管理SAMBA用户
  添加samba用户
  smbpasswd -a
  pdbedit -a -u
  修改用户密码
  smbpasswd
  删除用户和密码:
  smbpasswd –x
  pdbedit–x –u
  查看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>  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
  
  path=/data/smbshare
  writable = yes
  #valid users = smb1,smb2
  #browsable = no
  #public = yes

  service smb>  验证:
  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
  
  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
  
  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 -Uwang
  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
  
  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
  
  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,multiuser0 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
  
  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
  
  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的核心数据库,类似于sqlserver中 的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   获取程序默认使用的配置
  注意:进入数据库后是支持补全的,但是补全是区分大小写的
  常用命令:
  selectfrom 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的各应用程序提供配置信息
  
  
  
  
  
  
  
  格式:parameter = value
  说明:_和- 相同
  0,OFF,FALSE意义相同,1,ON,TRUE意义相同
  破解mysql的root口令跳过表????
  /usr/libexec/mysqld --help --verbose|less   查看命令行选项的帮助
  28、配置文件
  配置文件:
  后面覆盖前面的配置文件,顺序如下:
  /etc/my.cnf       Global选项
  /etc/mysql/my.cnfGlobal全局选项
  SYSCONFDIR/ my.cnfGlobal选项
  $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
  
  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>  s.ClassID=c.ClassID;    左外连接的演示

  elect s.Stuid,s.name,c.Class from students as s left join>  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、统计各班级中年龄大于全校同学平均年龄的同学

页: [1]
查看完整版本: samba和mysql-myblog