Linux管理杂记

安装

在虚拟机中选择Other Linux 2.6 xkernel   //2.6的内核,支持centOS 5.5

 

linux分区

 

最多分三个主分区,有一个扩展分区,从扩展分区中分逻辑分区

分区最多支持4个主分区,即使有剩余空间也无法再分区,所以最多分三个主分区。

 

第一个主分区:/dev/sda1     (服务器中第一块scsi硬盘中的第一个主分区)

#s  指的scsi硬盘  [#h ide硬盘]

#d  disk磁盘

#a  服务器中的第一块磁盘

#1  第一块磁盘中的第一个主分区

 

//扩展

/dev/hdb4         服务器中第二块ide硬盘中的第四个主分区

/dev/sda5     服务器中第一块scsi硬盘中第一个逻辑分区

 

 

三分区分法:

/dev/sda1          /boot       #放启动文件        #1G即可

/dev/sda2          /             #根目录             #挂载点,文件系统选择ext3

swap分区      #swap分区,虚拟内存系统(内存不足时充当内存扩展)#物理内存1x-2x之间

 

/boot分区可以不用分,可以直接挂载在根目录分区

根和/swap分区必须要分

 

lvm逻辑卷管理(linux默认分区法)

/dev/vg00/lv00 / 根分区 80G         #lv00是逻辑卷,逻辑卷分区可以自动扩容

/dev/vg00/lv01/  #swap分区

/dev/sda           /boot分区

 

 

VMware 版本选择(跟所装的linux内核向对应)

Red Hat Enterprise Linux 5

Other Linux2.6.x kernel

 

网卡配置

不选择DHCP,因为虚拟环境中没有DHCP服务器

IP地址          子网掩码

192.168.100.1        255.255.255.0

 

软件安装选择

选自定义软件包安装customer

development(开发工具)       development tools(把其中的开发工具全部选择)

 

 

 

 

 

 

IP地址与子网掩码的关系

 

-----与运算------

192.168.100.1

11000000     10101000     1001000  00000001

255.255.255.0

11111111     11111111     1111111  00000000

-------------------------

11000000     10101000      1100100  00000000

结果:192.168.100.0 网段号

 

linux启动安装过程中的配置:

1、iptables防火墙

2、selinux防火墙

3、不要创建普通用户

 

进入系统以后:

==============================================

1、修改ip:     安装前配置的ip是无法生效的,修改网卡的配置文件,把onboot=yes,设置计算机每次重启都读取这个文件,这样ip才能生效

vi /etc/sysconfig/network-scripts/ifcfg-eth0

BOOTPROTO(启动协议)=static(手动配置)

IPADDR=192.168.100.1

NETMASK=255.255.255.0

ONBOOT=yes

配置好后要让配置文件生效,方法:

1)、init6       #计算机重启的命令

2)、service network restart     #重启服务

2、设置计算机每次启动是从三级别启动:

原因:常用启动级别3级别(从字符界面启动),5级别(从图形界面启动),蓝色界面按下a,输入级别,再输入个a,继续启动

命令:

vi /etc/inittab

id:3:initdefault

:wq

3、history -c       #清空历史命令

4、init  0      #把计算机关机

5、做快照

==========================================

让linux和win进行通信,windows远程登录linux系统:

1、 让两台计算机网卡设置同一个模式,把两台计算机连到同一个网段,同时连到同一个交换机,方法:两 块网卡模式必须相同

2、 把ip与子网掩码配置到同一个网段

 

 

测试两台计算机的连通性:

1、ping192.168.100.1

reply from ... ... ttl=64 #连通状态

request timed out         #无连通状态

远程连接软件

1、putty       #远程登录linux

2、winscp #远程传输文件

 

 

snippets(vim工具)

 

linux查看ip工具ifconfig eth0

 

 

 

第二讲Linux 命令

 

 

网络配置注意事项

1、不要把两块网卡的ip设置到同一个网段

2、只能有一块网卡有网关

 

Pc属于路由设备,所以它也遵守上面的规则

 

Linux排错

1、系统日志->/var/log/messages

2、应用程序日志->var/log/httpd/access.log

3、通讯日志->tcpdump -i eth0 (从网卡eth0上抓取数据)       #tcp/ip协议

 

Linux用户:

1、root              超级用户

2、系统用户        应用程序的进程执行者

3、普通用户        后期用来登陆测试的用户

 

Linux根目录:

1、bin

所有用户都能执行的指令

2、dev

底层的物理设备都会显示在这儿,如果使用的话需要挂载,即映射

计算机里底层的硬件设备标示,硬件设备只有映射后才能使用

将dev下的hdc(光驱)映射到media目录下,然后进行访问

mount  /dev/hdc  /media/

df命令,查看linux 中的映射表

3、home

普通用户的家目录,宿主目录

比如/home/user1,普通用户user1的家目录

4、sbin

只有root用户才能执行的命令

5、proc

内存镜像文件(不要直接存储与修改)

6、var

日志所在的目录

7、boot

系统内核和镜像文件所在目录(启动文件)

8、etc

配置文件所在的地方

9、lib

库文件所在的地方(类似win中的dll文件所在处)

10、media

挂载光盘的空目录

11、mnt

测试空目录

12、root

root用户的家目录

13、usr

/usr/bin        所有用户都能执行的指令

/usr/sbin       root用户才能执行的指令

14、selinux   linux防火墙

 

 

 

常用命令

 

! 后跟命令名,可以查看最近调用该命令的详细信息

 

文件权限(用户与用户组):

rwxr-xr-x         root   root    other    (对应了3类人群的3种权限)

用户      组        组里除了root外的其他用户

7         5         5

chown  user1:user1 file      #该变所有者和所属组(:前面为所有者,:后面为所属组)

chown root file

chown :root file

创建的目录普遍比文件要多个x权限,因为目录需要可执行,才能进入查看

 

umask        #权限掩码(最好不要修改)

#目录->755

#文件->644

 

rwx  读、写、执行

rwx  111         421=>7

r-x   101   401=>5

rw-   110   420=>6

r--    100   4

 

权限人群:

user          所有者

group        所属组

other         其他人

all              所有人

 

chmod 755 dir       #对文件或者目录设置权限

chmod 644 file

chmod  a+x file      #给所有人加一个执行权限

chmod  a-x file      #给所有人减一个执行权限

chmod  g+x file     #对所属组

 

 

bc

计算器

ctrl+c

强制退出当前命令行

 

ifconfig -a 能查看所有网卡信息,包括隐藏网卡,linux中禁用网卡是将其隐藏

 

ifconfig eth0 douw/up(关闭开启网卡)

 

ls

查看当前目录下的文件

-l    查看文件的属性

-a  查看目录下所有文件,包括隐藏文件(.或..开头的文件)

-h  查看文件的大小,换算单位

-d   查看目录属性

-R  递归查看

ls -lSh  查看当前目录下的文件,从大到小排列(S从大到小倒序排序,s从小到大排序)

man

查看命令的帮助手册

ls --help

查看ls的参数(简短的帮助)

ls -h

 

cd  切换目录

cd - 切换至最近切换过的目录

特殊目录

.  当前目录

.. 上级目录

~ 回到当前用户的家目录(cd同样可以快速回到当期用户家目录)

 

 

文件操作

touch file         #创建一个文件

touch file{1..100}        #{}集合操作符 使用..指定范围

 

rm -rf              #删除一个文件

rm -rf *                 #删除当前目录下所有的文件(无法删除隐藏文件)

!rm                 #调用历史中最近一次以rm开头的指令

 

cp file /mnt/     #复制一个文件到测试目录mnt/下

 

mv file /mnt/    #移动一个文件

 

cat file             #查看文件内容

cat file |wc -l    #查看文件有多少行

cat file |wc -c    #查看有多少字符

 

more file          #查看并分页显示

 

ln -s file /root/linkfile.exe         #创建file的快捷方式(s指源)

 

创建一个20M的文件

dd if=/dev/zero of=file1 bs=1M count=20(zero是一个设备,具有无限大的空间)

 

目录操作

 

mkdir test        #创建一个目录

mkdir -p test2/test3/test4        #递归创建目录

 

tree test2         #递归查看文件和目录(树形结构显示)

 

rm -rf test        #删除一个目录

 

cp test /mnt     #复制test目录到mnt下(无法成功)

cp -r test /mnt/           #递归的复制

cp -r test/ /mnt/     #将test下所有文件拷贝到mnt下,包括隐藏文件(cp -r test/*是无法拷贝隐                              藏文件的)

 

mv test /mnt    #移动test目录到mnt下

 

rsync -a test /mnt  #将test拷贝到/mnt下

rsync -a test/ /mnt #将test下所有文件拷贝到/mnt下

rsync的功能比cp功能更强大,能够迁移整个操作系统

 

查询搜索操作

 

which         #一般用来搜索执行程序,命令

which mv

which touch

which ls

 

find                 #有目的的查找特定文件

find /etc/ -namehttpd.conf

find /etc/ -namehttpd*           查找以httpd开头的文件

find /etc/ -name*conf       查找以conf结尾的文件

 

find /etc -nameinittab -exec ls -l {} \;使用大括号进行向后引用,将查找出来的结果传递给后续命令(有些命令必须在后面跟文件名,比如rm -rf)

find ./ -useruser1 -exec rm -rf {} \;     把从root下查找到的所有者是user1的文件删除掉

 

grep    #从文件中搜索包含linux的行

cat file |grep"php"       搜索file中包含php的行

cat file |grep -i"very"   -i是忽略大小写搜索

cat/etc/passwd|grep -E      使用正则进行匹配

 

 

压缩包

创建gz压缩文件

tar czffile.tar.gz file1    (c创建,zf代表gz结尾的压缩文件)     压缩

tar xzffile.tar.gz           解压(把c换成x)

 

tar cjffile.tar.bz2 file  创建

tar xjffile.tar.bz2         解压

 

zip services.zip/etc/services     压缩zip文件

zip -r test.zip/test       压缩zip目录

unzip test.zip         解压

 

 

 

vim编辑器的使用

vim是vi的增强版本,比如语法和函数高亮显示等

d$从光标处删除到行结尾

d^从光标处删除到行开头

 

 

linux共有7个终端,第七个终端是图形界面终端

当一个终端崩溃时,可以使用alt+(F1-F6)启动6个字符界面

 

 

ctrl+s暂停一个终端

ctrl+q继续一个终端

 

linux启动过程:

BIOS->mbr->grub->linux内核->init->/etc/inittab->3->/etc/rc.d/rc.sysinit->时钟,主机名,网卡,分区挂载->/etc/rc.d/rc3.d/->启动一系统进程->进入登录窗口->登录

 

1.bios

2.mbr

3./etc/grub.conf

#/boot/grub/grub.conf

#linux系统内核文件

#linux系统内核文件在/boot/vmlinuz-*

4./boot/initrd*

#系统镜像文件,把init启动起来

4.init

#是计算机启动的第一个进程,后期的工作都由它来完成,它的pid是1

5./etc/inittab

#id:3:initdefault

6./etc/rc.d/rc.sysinit

#时钟

#主机名

#分区挂载

7./etc/fstab

#/dev/hdc /media iso9660 defaults 0 0

#光盘自动挂载

#检测/etc/fstab新添加的未被挂载的分区:mount-a

8.查看进程

ps -ef

9.查看端口

netstat -tunpl |grep :80

10.把3级别下的httpd改成以s开头

chkconfig httpd on

#2,3,4,5级别下都启动

chkconfig --level 3 httpd on

#apache只在3级别下为s开头,随机启动

11.查看进程在不同的级别下分别为on或off

chkconfig --list httpd

12.linux中系统级别

0 关机

1 单用户模式,比如:破解密码

2 字符界面,但是nfs这些网络设置

3 字符界面

4 未被使用

5 图形界面

6 重启

 

 

附加知识:

1.nc

nc -l 20000

#开启20000端口

nc localhost 20000

#连接localhost这台计算机的20000端口

2.sendmail

#本系统的默认邮件服务器

#chkconfig sendmail off   #2,3,4,5为off

#service sendmail stop    #关闭sendmail邮件服务

#不用邮件服务器的就关闭它

3.查看本系统邮件

#mail

 

创建一个20000端口

nc -l 20000

穿过20000端口连接计算机nc localhost 20000

 

 

 

 

软件包的安装

 

第4课2012年5月28日

Linux软件包安装:

分为两部分:1、rpm包安装,2、源码包安装

源代码的安装方法所有系统都能支持,rpm包偏向于红帽和centos系统

 

查看进程命令

pstree |grep httpd

 

源码包的安装:

1、../configure   #生成配置文件(生成Makefile文件,该文件是配置地图)

2、make           #编译,通过gcc把c代码编译成执行程序

3、make install   #安装,把执行程序拷贝到相应的目录下

 

rpm(red hat project manager)包安装(如何安装、卸载)

rpm -vih httpd-2.2.3-43.el5.centos.i386.rpm

 

rpm制作过程:

1、制作Makefile文件

2、编译

3、封装到rpm包中,等待用户去安装这个rpm包

 

rpm包安装

1、rpm -vih httpd-2.2.3-43.el5.centos.i386.rpm

#-i install

#-v 可视化安装

#-h 百分比进度条

#如果rpm有依赖性的话

     --nodeps  截断依赖性

     --force         强制安装

2、rpm -qa

#查看系统中已经安装了的所有rpm软件包

rpm -qa |grep vsftpd*

#查看系统中是否已经安装vsftpd rpm包

3、rpm -qlhttp-i386

#查看某安装包安装文件所在路径

主要查看3个文件:1)、配置文件

 2)、执行程序(一般是二进制文件,启动该文件需要考虑pid分配,端口号等许多问题)

 3)、服务脚本(控制执行程序的参数)

 

4、/etc/rc.d/init.d             去该文件下找启动配置文件

vi vsftpd                     通过vi打开该配置文件

vi /etc/vsftpd.conf  

./vsftpd start               启动vsftpd程序

 

5、反查看

rpm -qf vsftpd.conf

#查看某文件是由哪个软件包安装的

6、卸载

rpm -e vsftpd-2.0.5-16.e15_4.1

#包名来自=>rpm -qa |grephttpd

卸载回出现依赖性问题:

#rpm -e vsftpd-2.0.5-16.e15_4.1 --nodeps

 

 

rpm依赖性:

1、安装A包,首先先得安装B包,安装B包首先先得安装C包。

 

使用yum源来安装(解决了rpm安装的依赖性):

(1)、准备光盘挂载

mount /dev/hdc /media

 (2)、光盘重启自动挂载

vi /etc/fstab

/dev/hdc /media  iso9660  defaults 0 0

 (3)、yum源设置

1)、cd /etc/yum.repos.d/

2)、mv CentOS-Base.repo CentOS-Base.repo.bak

3)、vi CentOS-Media.repo

[c5-media]

name=CentOS-&releasever - Media

baseurl=file:///media

gpgcheck=0

enabled=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

4)、查看yum源中包含php的rpm包

yum list |grep php*

5)、yum安装

yum -y install php*(-y参数代表yes)

#全自动安装php*开头的rpm包

6) 、yum卸载

yum -y remove dovecot*

 

yum clean all     #清除yum下载缓存  

源码包安装

在生成配置地图文件的时候检测错误

1、生成配置文件

源码包一般安装在/usr/local下与包名有关的文件夹下

./configure --prefix=/usr/local/apache2

2、编译

如果环境里没有gcc编译器 运行:     yum -y install gcc*

make      ->C代码编译成二进制程序

3、安装

make install       ->把二进制程序拷贝到/usr/local/apache2/下

 

安装apache源代码(源码包:httpd-2.2.9.tar.gz):

1、把源码包httpd-2.2.9.tar.gz解压

tar xzf http-2.2.9.tar.gz

 cd然后检查有没有configure脚本

2、生成配置文件

./configure--prefix=/usr/local/apache2

3、编译

make

4、安装

make install

5、cd/usr/local/apache2/

进入安装目录

6、启动apache

/usr/local/apache2/bin/apachectlrestart

7、查进程

ps -ef|grephttpd

8、查端口

netstat -tunpl|grep :80

 

 

单用户和救援模式:

1、linux用户密码破解

启动时(grub界面,按两下a键),在启动模式输入1,进入单用户模式,可以以root身份进入

passwd root修改密码

init6(重启)| init3(直接跳到3级别)

2、防止破解

加grub密码,防止进入grub

vi/etc/grub.conf     =>/boot/brub/grub.conf(编辑这个链接文件)

在任意地方加上password 123456(加上多行password,启动时就得输入多次密码)

然后平稳重启

3、救援模式

grub密码丢失的情况下进行救援模式

在重启时,按esc,从光驱启动,按F5键,或是输入linux rescue

修改grub.conf

然后reboot重启(init命令在此模式下无法使用)

 

 

 

用户和权限

第5课2012年5月29

1、用户

切换登陆用户:

(1)、切换多个终端登录测试

(2)、su - user1(-保留用户所有文件),su最好以root用户执行,其他普通用户才能正常读写

  使用exit依次退出

2、目录和文件

3、权限(读写执行)

 

与用户有关的操作:

1、添加用户

useradd user1

2、删除用户

userdel -r user1(-r参数将用户彻底删掉,将用户相关文件全部删除,当下次再创建该用户时不会出现错误)

3、修改密码

passwd user1

4、与用户有关的文件(最主要的四个)

/etc/passwd       用户账号信息

uid为0是超级管理员,500为普通用户开始值

 

/etc/shadow       用户密码

/etc/group         用户组容器

/home/user1      用户家目录

 

usermod -s /bin/bash username激活添加的账户

 

组:

1、添加组

groupadd grp1

2、删除组

groupdel grp1

 

用户与组的关系:

1、如何把用户加入组(选择第3种方法)

(1)、#usermod -g grp1 user1(将创建user1时user1的所属组删除并加入grp1组)

(2)、#usermod -G grp2 user2(将user2加入grp2,user2原本所属组保留,将用户删除组时有问题)

(3)、gpasswd -a user3 grp3    (将用户user3加入grp3组)

-a add

  gpasswd -d user3 grp3    (将用户user3从grp3组中删除)

-d delete

2、如何查看组内用户

cat  /etc/group

3、如何查看用户属于哪些组

id user1

 

权限分配(掌握acl方法):

setuid          setgid         t位     #这3个位组成权限里的第一个值如0777的0

4                 2                 1                                                  4755

所有者s位     所有组s位     其他人t位

1、chmod

chmod 777 test

2、chown

chownuser1:user1 test

chown :user1 -Rtest         #递归的修改所属组,使其下级目录也修改

3、setuid(设置文件所有者uid),对可执行文件使用才有意义

一般只针对执行程序设置,s位是什么意思?

chmod u+s/bin/touch       #touch命令创建的文件有s

chmod u+s/bin/su

chmod 4755/bin/su

 

关于s位:ll    /bin/su

# -rwsr-xr-x  1  root root  23968  ......  /bin/su

当s位存在时说明,任何一个有执行权限的用户都可以使用su命令,而且是以root用户身份在执行(如su切换用户后passwd也是以root身份使用,就有执行权限了,而user1切换uesr2时无法执行passwd,则无法输入密码)

删除s位:chmod u-s /bin/su

 

4、setgid      #目录的所属组可以往下继承

chmod g+s test

 

chown :user1 -Rweb    #web下创建的文件所属组全部为user1,无论多少层目录,但是新建的文件所属组又会变为原来的组

 

5、t位(设置other位)  #所有人共享一块空间,只能对自己创建的文件进行修改删除

如果不设置t位的话,虽然每个用户只能读自己的文件或目录,但是无法限制删除的权限

chmod 757 web

#other有所有权限时,自己只能删除修改自己的东西

chmod o+t web

chmod 1757 web

 

6、sudo(选择第一种方法)      #对执行过程(如命令)或执行程序设置权限,要用sudo来授权

(1)、visudo

对组设置使用%组名,对用户直接输入用户名,‘,’分割权限

使用被设置命令时,将命令路径补全,然后前面加上sudo

user1 localhost=/usr/sbin/useradd,/usr/sbin/userdel

#user1 localhost=/usr/sbin/useradd user4,/usr/sbin/userdel user4

测试:

sudo /usr/sbin/useradd user4

#第一次需要输入user1的密码,是有时效性的

(2)、vi /etc/sudoer

 

7、acl(访问控制列表)

(1)、设置acl权限

  setfacl -m u:user1:r-- web        #setf(file)acl -m(modify)

  setfacl -m u:user2:rw- web

  setfacl -m u:user3:rwx web

 

  添加默认权限(当创建下级文件时,有同样的设置)

  setfacl -m d:u:user3:rwx web

(2)、删除acl权限

  setfacl -b web      #将web下所有后面添加权限删除

  setfacl -x u:user1 web         #只删除web 中user1的权限

(3)、查看acl权限

  getfacl web          #获取web文件的acl列表

 

acl怎样解决权限的继承问题

setfacl -m u:user1:rwx -R web #设置user1对web下所有文件具有rwx权限,但是对新建的目录或文件不起作用

setfacl -m d:u:user1:rwx -R web #设置user1对web下所有文件默认具有rwx权限,新建文件或目录同样起作用

[root@localhost /]# getfacl web

# file: web

# owner: root

# group: root

user::rwx

user:user1:rwx

group::r-x

mask::rwx

other::r-x

default:user::rwx

default:user:user1:rwx

default:group::r-x

default:mask::rwx

default:other::r-x

 

[root@localhost /]# getfacl web4(web4为web下级目录)

# file: web4

# owner: root

# group: root

user::rwx

user:user1:rwx

group::r-x

mask::rwx

other::r-x

default:user::rwx

default:user:user1:rwx

default:group::r-x

default:mask::rwx

default:other::r-x

 

 

 

 

 

 

服务进程

linux服务,进程,端口:

应用程序

/usr/sbin/httpd

服务脚本

/etc/rc.d/init.d/httpd

 

服务

chkconfig --list httpd         #查看httpd在不同级别启动情况

chkconfig httpd on       #设置httpd服务在2345级别下运行

chkconfig httpd off       #关闭httpd服务2345界别的运行

chkconfig --level 3 httpd on         #设置httpd服务3级别启动

service httpd start        #启动httpd应用程序

service httpd stop        #关闭httpd应用程序

service httpd restart     #重启httpd应用程序

 

如何将apche设置为开机自动运行

vi /etc/rc.local

加上/usr/local/apache2/bin/apchectl start

 

cd /etc/init.d

vi httpd

里面有一行#chkconfig: - 85 15 ,该行表示了httpd服务的启动级别为85(比较靠后,启动稍晚),关闭级别为15(比较靠前,关闭稍早)

 

进入/etc/rc3.d里面有许多的服务脚本,有S(开始)开头的,有K(停掉)开头的

 

进程

 

查看进程

ps -ef |gerp httpd             #进程表

pstree - p|grep test           #进程树

top                                 #类似win的任务管理器,能看到cpu、内存使用率,按q                                    键退出

free                                #查看计算机内存

 

./test.sh &                       #将程序后台执行

 

结束进程

kill -9 pid号

killall httpd(进程名)

pkill httpd(进程名)

 

端口

netstat -tunpl |grep :80          #查看80端口

netstat -tunpl |grep httpd        #查看httpd服务的端口

netstat -tun                          #查看当前活跃的连接

 

计算机端口:1-65535个

 

nc -l 20000                      #新建20000端口

nc localhost 20000            #连接20000端口

telnet 192.168.255.1 20000    #用telnet登陆192.168.255.1上的20000端口

 

 

 

 

 

 

 

文件系统

df -h 查看磁盘空间(带有换算单位功能)

df -Th 带文件格式的查看方法

 

stat filename          #查看filename的文件状态

查看内存:

1、free -k     或free -m(以m为单位打印)   或free -g

 

 

要点内容:

1、crontab 任务计划

2、硬盘分区、挂载

3、quota磁盘配额

 

 

crontab 任务计划

1、新建任务计划

crontab -e                   #edit

*****echo"aaaaaaaa" >>/tmp/file1

2、关于crontab语法:

时间             *代表每,5个*代表每分钟

执行命令        将执行程序写上全路径

3、时间

* * * * *共5个位置,依次为分、时、日、月、周

30 17 * * * 每天下午5:30

00 00 * * * 每天晚上00:00

00 00 * * 1-5 周一到周五的每天晚上00:00

* /5 * * * * 每隔5分钟

00 00 * * 1,3,5 周一、周三和周五的晚上00:00

 

4、命令

要将路径写全

如:在linux不写全路径时某些命令不能执行

/sbin/  或 /usr/sbin/     必须加全路径

/bin    或 /usr/bin        不用加全路径

*****echo"aaaaaaaa" >>/tmp/file1

 

5、查看任务计划

crontab -l          #list

6、删除任务计划

crontab -r          #remove

 

linux中的重定向(大于号前面一定要写空格):

>                     覆盖式的写入

>>                   追加

 

实时查看一个文件(规律变化的文件):

1、tail      默认查看文件后十行

tail -2  查看文件后2行

tail -f /tmp/file1  实时跟踪一个文件

#cd/var/log/httpd

#tail -faccess_log   #实时查看apache访问日志

2、head   默认查看文件前十行

head -2 查看文件前2行

 

watch -n1     #1秒钟刷新一次,实时跟综任何一个指令或文件,n后面为秒数

watch -n1 ps -ef |head -10 #每秒钟刷新进程前10

 

 

 

 

磁盘分区、格式化和挂载使用

先分扩展分区,然后进行逻辑分区

1、查看硬盘分区

fdisk -l              #list

2、对硬盘进行分区

一个硬盘只能有4个主分区,一个系统可以有多个。新加入的硬盘直接加入扩展分区

fdisk  /dev/sdb

 

m       帮助

n        新建分区(e扩展分区,p主分区,l逻辑分区,先分扩展分区才能出现逻辑分区

p        查看分区

w       保存现有分区结构

t        改变分区文件系统(默认 83--linux默认支持的ext3文件系统;8e--lvm 逻辑卷;fd--raid 磁盘阵列),在文件系统选择步骤选择83作为逻辑分区的文件系统

d        删除分区

 

extention

logical

primarypartition    

 

3、partprobe

分区完成后,输入此命令,让所有的软件都能知道这个新分区,并且知道文件系统

 

4、fdisk -l

 Device Boot    Start       End      Blocks      Id System

/dev/sdb1          1        1044    8385898+   5  Extended

/dev/sdb5          1        13        104359+   83 Linux

将要格式化的为逻辑分区sdb5

5、分区格式化

a、mkfs.ext3  /dev/sdb5

#把/dev/sdb5格式化成ext3文件系统

mount /dev/sdb5 /mnt       #将sdb5挂载到mnt目录

被挂载的目录最好应该为空,不然挂载前该目录中的文件在挂载后将消失

b、保障重启还能生效:

vi /etc/fstab

/dev/sdb5     /mnt   ext3 defaults   0   0

c、mount -a

加载/etc/fstab挂载表,没有挂载的会进行重新挂载,可以测试磁盘挂载语句(防止语句错误,无法启动系统)

d、df -T

#查看已挂载的分区(打印分区格式)

 

 

quota磁盘配额(只能对分区,配额是分区的属性)

做配额要看清给哪个分区做配额,只对指定分区有效

 

配额分类: 空间配额       blocks

文件数配额     inodes

 

1、给分区加磁盘配额属性

vi /etc/fstab(分区表)

修改/dev/VolGroup00/LogVo100    /    ext3   defaults,usrquota     1   1

2、分区属性生效的方法:

a、重启电脑或mount -o remount /      #把分区进行重挂载

3、首先准备用户

useradd   user1

4、扫描配额名单表

quotacheck  -cmug  /       #创建并扫描用户和组配额表放到根分区

5、对用户设置配额

每一种配额方式都有:软限制和硬限制

硬限制要大于软限制

edquota -u user1        

blocks已使用空间

inodes已使用文件数

soft    软限制

hard   硬限制

#Disk quotas for user user1 (uid 500):

# Filesystem                                               blocks       soft       hard    inodes     soft     hard

# /dev/mapper/VolGroup00-LogVol00         32          0          0         10        0       0

 

hard值一定要大于soft

f1、查看用户配额

quota           #用户自己查看配额

quota -u user1

g1、启动配额

quotaon -aug     #-a为所有的,-ug用户和组

h1、测试配额

du -sh test         #查看目录大小

ls test/ |wc -l      #查看目录下文件个数

i、文件配额

useradd  user2

quotacheck -cmufg /

edquota -u user2

quotaon -aug

j、注意事项:

一定要搞清楚设置配额的分区

k、新分区不支持acl属性

手动加上

vi /etc/fstab

/dev/sdb5  /mnt  ext3 defaults,acl  0  0  #将acl加入启动项

mount  -o  remount /dev/sdb5           #重新挂载/dev/sdb5

 

#查看分区挂载属性(rw,acl,usrquota,noexec)

 

对于5.4以前的系统:

useradd user2

quotaoff -aug                   #关闭配额

quotacheck -cmufg /

edquota -u user2

quotaon -aug

 

 

shell 编程

shell编程需要学习的语种:

shell语法

awk编程            #作用:截取坐标

例: df |awk 'NR==3{print int($4)}'截取df命令输出结果中第3行第4列内容

cat /etc/passwd |awk -F: '{print "username:”$1"=>uid:"$3}'

perl编程

python编程

 

 

/etc/bashrc        #系统中定义常量的文件,可以将命令别名定义在这里,这样每个用户都可以使用

 

history

存放位置:~/.bash_history

命令历史history

history查看命令历史

history -c清楚命令历史

 

alias

存放位置:~/.bashrc

 

alias [别名]                           #查看命令别名

alias 别名='实际执行的命令'       #设置命令别名

unalias 别名                          #取消已设置的命令别名

 

输入输出

echo 'aaa' >file1              #将aaa输入到file1

echo 'bbb'>> file1       #将bbb追加到file1中

ls > file1           

aaaaaa > file1

 

对于脚本中不想使用的输出,可以将其输出到黑洞设备内,如

pstree |grepmysqld &>/dev/null

 

小脚本(判断进程是否开启,如果未开启则重启进程)

pstree |grephttpd &>/dev/null

if [ &? -ne 0]

then

service mysqldrestart

fi

 

管道操作符号 |

 

$?测试上一条语句是否成功,0为--执行成功,非零--语句失败

 

#开头的行为注释行,

第一行#!/bin/bash标示所用解析器,

第二行写脚本名#test.sh

 

 

 

 

引号:

'    不解析变量

"    解析变量

`   将命令执行的结果输出给变量

 

脚本执行的时候必须加上可执行权限

chmod a+x ./test.sh

 

shell变量:

全局变量

echo $PATH

=>/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin       #以上:分隔的目录都为命令存放目录

echo $HISTSIZE

 

echo $PS1         #

PS1="==>"       #改变linux命令提示符

 

局部变量

位置变量

预定义变量

 

 

全局变量

PATH

HISTSIZE

PS1

PS2

 

局部变量

1、定义变量             //定义时没有$,输出时有$

str="helloworld!!"        #等号前后没空格

str='helloworld'

2、输出变量

echo $str

3、删除变量

unset str

4、查看变量

set

5、查看全局变量

env

6、把局部变量变成全局变量

export str

 

位置变量(一般是$0-$9,$0代表脚本本身)

#!/bin/bash

#test.sh

 

for loop in $1$2 $3 $4 $5       #此处为位置变量

do

echo $loop

sleep 1                                #休眠1秒

done

 

调用 ./test.sh a b c d e f

 

 

预定义变量

$?      判断上一次命令执行是否成功

$#      给脚本传递的参数个数

$*      传递了哪些参数

 

for loop in $*

do

echo $loop

sleep 1

done

 

for loop in $#

do

echo $loop

sleep 1

done

 

echo "参数个数:${#}"         #集合操作符写在$后面

for loop in $*

do

echo $loop

sleep 1

done

 

 

linux中数学运算

expr 1 + 1

expr 1 \* 1        #1X1

 

 

如何实现$i++

数学自增:

let i++

let i--

 

expr 1 + 1

expr 1 \* 1        #  *在linux代表模糊查询,需要转义

 

i=10

i=`expr $i + 1`       #$i自增1

 

str=`ls`

echo $str

 

键盘输入

read -p"please input yourname:" name

echo $name

运行脚本后,在屏幕上输入name,后面代码中可以直接调用$name

 

条件测试

1、文件测试(操作符前后有空格,文件路径前后有空格)

[ -d /etc ]&& echo "yes"        #测试文件是否是目录

[ -f /etc/passwd] && echo "yes"  #测试是否是文件

-e #测试目录或文件是否存在

-r  #测试当前用户是否有权限读取

-w #测试当前用户是否有权限写入

-x  #测试当前用户是否可执行该文件

-L  #测试是否为符号连接文件

2、整型测试(操作符前后有空格

-eq          等于         (Equal)

-ne          不等于      (Not Equal)

-gt      大于         (Greater Then)

-lt       小于         (Lesser Then)

-le      小于或等于 (Lesser or Equal)

-ge          大于或等于 (Greater or Equal)

3、字符串比较

[ 字符串1 = 字符串2 ]   #是否等于

[ 字符串1 != 字符串2 ]  #是否不等于

[ -z 字符串 ]                #字符串内容为空

4、逻辑测试

-a或&&:逻辑与

-o或||: 逻辑或

!:         逻辑否

 

 

if条件语句--单分支

 

if   条件测试命令

then

fi

 

if 磁盘已用空间>80%

then 报警

fi

 

#!/bin/bash

#if

read -p "username:" name

if[$name ]

 

 

 

 

 

awk

 

df |awk '$0~/mapper/{print $0}'       #第一行第一列

-F:      以:作为字符分隔符

NR      行数

NF      字段数

 

df |awk 'NR==3{print $4}'      #打印第三行第四列

df |awk 'NR==3{print int($4)}'     #打印出df的结果中第三行第四列并转整

 

$num=`df |awk 'NR==3{print int($4)}'`

 

if [ $num -ge 20 ]

then

echo "/分区超过20%,now is ${num}%"

fi

 

for((i=0;i<10;i++))

do

echo $i

done

 

循环添加100个用户

#!/bin/bash

 

for((i=1;i<=100;i++))

do

echo "startuseradd ...."

useradd"user${i}"

echo"-------------------"

echo "startpasswd ......"

echo 123456|passwd --stdin user$i &>/dev/null

done

echo "用户添加完毕,密码初始化为123456"

 

 

i=1;

while [ $i -le 100 ]

do

userdel -r user$i

let i++

done

 

 

case $1 in

start)

echo "start...."

;;

stop)

echo"stop...."

;;

restart)

echo"restart...."

;;

reload)

echo"reload...."

;;

*)                         #默认

echo"bbb"

;;

esac

 

 

function menu(){

echo"aaaaaaa"

}

menu

 

菜单实例

function menu(){

cat <<end

1) aaaaaaaaaaaaaa

2) bbbbbbbbbbbb

3) ccccccccccccccc

4) quit

end

}

 

while :

do

menu

read -p "please you input 1|2|3|4:" opts

case $opts in

1)

echo"aaaaaaaaaaaaaa"

;;

2)

echo"bbbbbbbbbb"

;;

3)

echo"cccccccccccc"

;;

4)

exit

;;

esac

done

 

shift    输入的参数列表第一个参数出栈

 

shell脚本应用示例

 

示例1:周五17:30清理FTP服务器的公共共享目录

    检查 /var/ftp/pub/ 目录,将其中所有子目录及文件的详细列表、当时的时间信息追加保存到 /var/log/pubdir.log 日志文件中,然后清空该目录

[root@localhost~]#vi/opt/ftpclean.sh

#!/bin/bash

date >>/var/log/pubdir.log

ls -lhR/var/ftp/pub >> /var/log/pubdir.log

rm -rf/var/ftp/pub/*

[root@localhost~]#crontab-e

30 17 * * 5/opt/ftpclean.sh

 

示例2:

每隔3天对数据库目录做一次完整备份

   统计/var/lib/mysql 目录占用的空间大小、查看当前的日期,并记录到临时文件 /tmp/dbinfo.txt 中,将 /tmp/dbinfo.txt 文件、/var/lib/mysql目录进行压缩归档,备份到/opt/dbbak/目录中,备份后的包文件名中要包含当天的日期信息, 最后删除临时文件/tmp/dbinfo.txt

[root@localhost~]# vi /opt/dbbak.sh

#!/bin/bash

DAY=`date +%Y%m%d`

SIZE=`du -sh/var/lib/mysql`

echo "Date:$DAY" >> /tmp/dbinfo.txt

echo "DataSize: $SIZE" >> /tmp/dbinfo.txt

cd /opt/dbbak

tar zcvfmysqlbak-${DAY}.tar.gz /var/lib/mysql /tmp/dbinfo.txt

rm -f/tmp/dbinfo.txt

 

[root@localhost~]# crontab -e

55 23 */3 * *  /opt/dbbak.sh

 

 

 

网络设置

Packet Tracer 5.0 by Cisco Systems(思科交换机模拟软件)

 

0.0.0.0代表所有ip地址

 

linux网络设置:

1)主机名修改

临时:hostname  server1

永久:vi/etc/sysconfig/network

HOSTNAME=server1

查看:hostname

2)修改ip地址

临时:ifconfig  eth0 192.168.200.1

永久:vi/etc/sysconfig/network-scripts/ifcfg-eth0

IPADDR=192.168.100.1

NETMASK=255.255.255.0

查看:ifconfig  eth0

查看所有接口:ifconfig  -a

 

3)网关

临时:route  add default  gw 192.168.100.1            #gw  gateway

永久:vi  /etc/sysconfig/network-scripts/ifcfg-eth0

GATEWAY=192.168.100.100

查看:route -n

4) 服务器

永久:vi /etc/resolv.conf

nameserver  8.8.8.8

 

 

网络OSI七层模型:

七层 应用层

六层 表示层   

五层 会话层   

四层 传输层     源端口-目的端口

三层 网络层     源ip-目的ip   (地址和名字)  ->发送一个arp广播(arp病毒)

二层 数据链路层  源mac-目的mac  (身份证号码)

一层 物理层    

 

 

 

nfs文件共享

nfs服务器:

实验环境:linux > linux

 

server设置过程:

1、安装软件

yum -y install nfs*

 

2、修改配置文件

vi /etc/exports

 

/share *(sync,rw)    //*代表所有的人,可以用ip地址段表示

 

/share *|192.168.100.0/24(sync,rw|ro)                 #sync磁盘同步

# *代表所有ip地址,24代表子网掩码255.255.255.0

#ro    只读

 

3、启动服务

service nfs restart

 

服务随机启动:

chkconfig nfs  on

#2,3,4,5级别下启动

 

在客户端测试连接前关闭服务器的防火墙:

iptables

查看:iptables  -L

删除:iptables  -F

service  iptables save

 

selinux

查看:sestatus

禁用:vi /etc/selinux/config

SELINUX=disabled

 

分配权限(系统权限),让客户端nfsnobody用户能够创建文件

setfacl -m d:u:nfsnobody:rwx -R share/

 

客户机重启后还能挂载:

vi /etc/fstab

192.168.100.1:/share /mnt nfs defaults 0 0#测试umount /mnt mount -a  df

 

client:

查看nfs文件夹

showmount -e 192.168.100.1

 

挂载服务器共享文件夹

mount 192.168.100.1:/share  /mnt

 

 

 

 

smb文件共享

在win下开发linux上挂的网站需要用到该技术

 

samba文件共享:

1、安装软件

yum -y installsamba*

在CnetOS5.5版本中输入--skip-broken         #跳过无法解决依赖性包的安装

2、修改配置文件

rpm安装的apache网站根目录:

/var/www/html

 

#找到以home开头的行,复制,粘贴为web

vi/etc/samba/smb.conf

[web]                              #共享名

path=/var/www/html         #共享路径

browseable=yes               #可浏览

writable=yes                    #可写

 

3、创建samba用户(特殊,系统里面必须有个跟samba同名的用户,而且此用户无密码)

useradd  user1

smbpasswd  -a user1      //输入两次密码  #将用户user1加入samba用户

 

权限设置

chmod o+w html/        #不精准的方法

setfacl -md:u:user1:rwx -R html/     #acl方法

 

service smbstart         启动服务

win下开发linux网站的配置

要注意:设置samba用户为apache,httpd服务用户也为apache

win在linux下开发需要将user1改为apache

smbpasswd  -a apache

setfacl -mu:apache:rwx -R /var/www/html/

setfacl -md:u:apache:rwx -R /var/www/html/

 

win下删除远程登录用户(win下存储用户缓存的方式,导致用户缓存很难清除,需要用一下方法)

net use /delete *

 

使用mkdir创建文件时,要注意权限参数没有双引号(brophp框架创建文件命令有问题)

 

4、启动服务

service  smb restart

 

 

 

 

client:

linux ->

mount //192.168.100.1/web  /mnt  -o username=user1    #-o option选项

 

 

windows ->

1、\\192.168.100.1\web

2、映射网络驱动器(\\192.168.100.1\web => z:)

 

ftp文件服务器

ftp服务器主要用来软件发布使用

server:

1、安装软件

yum -y  install  vsftpd*

 

2、修改配置文件

vi /etc/vsftpd/vsftpd.conf

anon_upload_enable=yes            #使匿名用户可以上传

anon_mkdir_write_enable=yes         #使匿名用户创建文件夹

anon_other_write_enable=yes     #使匿名用户具有修改删除权限

 

3、启动服务

service vsftpd restart

chkconfig vsftpd  on       //下次重启系统,服务随机启动

 

ftp根目录:

/var/ftp/pub/

设置权限chmod o+w pub/       #默认服务用户为ftp

setfacl

 

查进程:

pstree |grep  vsftpd

 

client:

ie -- ftp://192.168.100.1

 

dos -- ftp 192.168.100.1

匿名用户:ftp

密码:空

 

可以使用linux内的普通用户在win的ftp端登陆,上传文件至用户家目录,如:/home/user1

 

匿名用户上传:

修改配置文件 vi /etc/vsftpd/vsftpd.conf

去掉anon_upload_enable=YES的注释

匿名用户创建文件夹:anon_mkdir_write_enable=yes

匿名用户修改文件名:anon_other_write_enable=yes

 

 

 

 

ssh文件传输

linux的ssh两大功能:

1、远程登录

ssh192.168.100.1

2、远程传输

a、scp file1192.168.100.1:/root/           #拷贝file1至远程服务器

b、rsync -a -essh file1 192.168.100.1:/root/

rsync本身是一种远程传输技术,只是让其沿着ssh安全隧道传输

 

不要口令登录或远程传输:

1、客户端生成一对钥匙

ssh-keygen -t rsa    然后连续回车

/root/.ssh/id_rsa #私钥

/root/.ssh/id_rsa.pub#公钥

2、把自己的公钥传到服务器的相应目录下/root/.ssh/authorized_keys

ssh-copy-id  -i /root/.ssh/id_rsa.pub 192.168.100.1

3、ssh 192.168.100.1        #此时不再要口令了

 

两种远程传输方式:

1、ssh file1192.168.100.1:/root/  将file1拷贝到192.168.100.1的/root/下

2、rsync -a -essh file1 192.168.100.1:/root/

 

 

ssh验证方法:

1、口令验证

2、密钥验证

 

密码学:

1、对称加密

2、非对称加密

3、单向不可逆加密 md5

 

非对称加密(原理:一把钥匙--私钥配多把锁--公钥):

1、网银

2、安全的网站

 

1、服务器把公钥交给用户,用户到服务器的数据是通过这把锁加密的

2、用户把自己的锁交给服务器,让服务器拿用户的锁加密数据然后传输,用户使用自己的私钥去解开

crontabssh配合备份网站文件

crontab -e

00 02 * * * tarczf /tmp/html.tar.gz  /var/www/html   #压缩

30 02 * * * rsync-a -e ssh /tmp/html.tar.gz 192.168.100.1:/tmp          #传输

 

dns域名服务器

作用:把域名转成ip地址

 

三大类dns服务器:缓存dns服务器;主dns服务器;从dns服务器

 

1、dns查询方式

2、缓存dns服务器

3、主dns服务器

4、从dns服务器

 

域名的结构(标准的域名后面有一个.):

www.baidu.com/a/b/c/index.php

www.baidu.com.:80     

www.baidu.com.      #主机名

baidu.com     .             #域名

 

. 13台dns根域

 

 

 

缓存dns服务器:

通过向其他域名服务器查询获得域名->IP地址记录将域名查询结果缓存到本地,提高重复查询时的速度

 

 

server:

1、安装软件

yum  -y install  bind*               #安装主服务器需要的软件

2、修改配置文件

配置文件和解析数据库:

/var/named/chroot/

etc          #配置文件

var              #解析数据文件

 

设置缓存dns服务器

yum  -y install  caching-nameserver*

 

配置文件和解析文件如何配合:

named.caching-nameserver.conf       #访问控制文件

named.rfc1912.zones                      #dns配置文件

 

 

3、启动服务

 

需求:假设一台dns服务器,解析baidu.com,这个域下有几个域名:

1、www.baidu.com

2、mp3.baidu.com

3、ftp.baidu.com

 

1、安装软件

yum -y installbind* caching*

2、修改访问控制文件

vi/var/named/chroot/etc/named.caching-nameserver.conf

1)localhost=>any

2)127.0.0.1=>any

3、修改配置文件

正向解析-baidu.z

反响解析-baidu.f

4、创建baidu.z和baidu.f

cd/var/named/chroot/var/var/named

 

设置缓存dns服务器

yum -y installcaching-nameserver*

 

配置文件和解析文件:

named.caching-nameserver.conf  //访问控制文件

named.rfc1912.zones   //dns配置文件

 

需求:架设一台dns服务器,解析baidu.com,这个域名下有一下域名:

1、www.baidu.com

2、mp3.baidu.com

3、ftp.baidu.com

 

主dns服务器步骤

1、安装软件

yum -y install bind* caching*

2、修改访问控制文件

vi/var/named/chroot/etc/named.caching-nameserver.conf

将localhost全部替换为any,将127.0.0.1全部替换为any

3、修改配置文件

//正向解析-baidu.z

zone"baidu.com" IN {

        type master;

        file "baidu.z";

        allow-update { none; };

};

//反向解析-baidu.f

zone"100.168.192.in-addr.arpa" IN {

        type master;

        file "baidu.f";

        allow-update { none; };

};

 

4、创建baidu.z和baidu.f

寻找合适的配置文件做为模版named.local(var/named/chroot/var/named/)

cp named.localbaidu.z

vi baidu.z

:%s/localhost/baidu.com/g

 

//baidu.z内容

$TTL    86400

@       IN     SOA     baidu.com.root.baidu.com.  (

                                     1997022700 ; Serial

                                      28800     ; Refresh

                                     14400      ; Retry

                                     3600000    ; Expire

                                      86400)    ; Minimum

        IN     NS      ns1.baidu.com.

        IN     NS      ns2.baidu.com.           //从dns设置

 

ns1     IN      A      192.168.100.1

ns2     IN      A      192.168.100.2            //从dns设置

www     IN     A       192.168.100.1

mp3     IN      A      192.168.100.2

 

//baidu.f内容

$TTL    86400

@       IN     SOA     baidu.com.root.baidu.com.  (

                                     1997022700 ; Serial

                                     28800      ; Refresh

                                     14400      ; Retry

                                     3600000    ; Expire

                                      86400 )    ; Minimum

        IN     NS      ns1.baidu.com.

        IN     NS      ns2.baidu.com.      //从dns设置

 

1       IN      PTR     ns1.baidu.com.

1       IN      PTR     ns2.baidu.com.      //从dns设置

1       IN      PTR     www.baidu.com.

2       IN      PTR     mp3.baidu.com.

 

 

5、重启服务

service named restart

 

6、测试

 

出现错误,查看日志信息tail/var/log/message

错误原因,是/var/named/chroot/var/named/baidu.z 和baidu.f的权限有问题

解析文件的权限配置:

chown :namedbaidu.*

 

pingwww.baidu.com

 

7、再次重启服务

service named restart

 

 

 

 

dns解析记录类型:

1)IN  internet

2)A   从域名到ip

3)NS 本域里面负责域名解析的dns服务器

4)PTR     从ip到域名的解析记录(反向解析时才能看到)

5)SOA    权威解析记录(负责一个域内的最权威的那台主dns服务器)

 

 

 

从dns服务器

1、安装软件:

yum -y install bind* caching*
2、修改访问控制文件

vi /var/named/chroot/etc/named.caching-nameserver.conf

将localhost全部替换为any,将127.0.0.1全部替换为any

3、修改配置文件

vi /var/named/chroot/etc/named.caching-nameserver.conf

//正向解析-baidu.z

zone"baidu.com" IN {

        type slave;

        file "slaves/baidu.z";

        masters { 192.168.100.1; };

};

//反向解析-baidu.f

zone"100.168.192.in-addr.arpa" IN {

        type slave;

        file "slaves/baidu.f";

        masters { 192.168.100.1; };

};

 

修改主服务器的baidu.z和baidu.f,增加上从服务器的ip

 

4、从主服务器复制得到baidu.z和baidu.f

查看从服务器的/var/named/chroot/var/named/slaves,同步成功后会出现baidu.z和baidu.f

 

5、测试

ping www.baidu.com

ping -a 192.168.100.1

host 192.168.100.1

host 192.168.100.2

 

主从同步的测试

1、主服务器解析文件:

1997022701:serial   //一定要比从服务器大才行

2、重启主服务器从跟着同步

service named restart

3、设置windows网卡的首先和备用dns服务器

4、设置主从dns服务器-ping和nslookup

 

主从服务器无法同步的解决办法

主DNS需要在辅助DNS的chroot文件夹中有写权限。然后在辅助DNS上重启named服务,主DNS会把相应的ZONE文件直接传递到辅助DNS上

在从服务器上输入chown =R named.named chroot/

 

 

 

 

 

 

 

lamp环境编译

准备工作

1、编译之前防火墙要关闭

关闭SELinux,允许防火墙80端口访问

sestatus   (linux防火墙)

vi/etc/selinux/config

SELINUX=disabled *若安装时没有禁用SELinux,将enforcing改为disabled

修改后需重新启动Linux方可生效

 

关闭防火墙Netfilter/iptables

iptables -F     *如果没有禁用防火墙,默认80端口禁止访问

service iptablessave     防火墙策略写到/etc/sysconfig/iptables,以后计算机重启再加载这个文                                                    件时,防火墙策略就会永久清空.

 

 

2、环境里一定要有gcc

编辑yum配置文件

cd /etc/yum.repos.d/

mv CentOS-Base.repo CentOS-Base.repo.bak   #将该文件设为备份

vi /etc/yum.repos.d/CentOS-Media.repo

准备光盘挂载

mount /dev/hdc/media

依次安装gcc、gcc-c++

yum -y installgcc*

3、卸载系统之前有的Apache、MySQL和PHP的RPM,或是将原有的服务停止

service httpdstop

service mysqldstop

卸载RPM包的Apache、MySQL、PHP

rpm–e http-1.2.3.rpm --nodeps          #截断这个rpm包的依赖性

yum remove httpd

yum remove mysql

 

 

编译安装

*每个源码包配置编译安装完成后,确认安装目录是否生成安装文件

 

./configure后面不指定prifix和其他一些属性时,默认是安装在系统路径,在/usr/local/bin下能找到该软件的bin,当其他软件安装过程中需要用到该软件,若没指定寻找路径,就会到/usr/local/bin/去调用

 

准备语句

tar xzf file.tar.gz      #解开gz压缩文件

tar xjf file.tar.bz2         #解开bz2压缩文件

 

源码包放在/lamp下    mkdir /lamp

编译以后的文件放在/usr/local

 

安装libxml2(php编译时需要使用)

cd/lamp/libxml2-2.6.30

./configure--prefix=/usr/local/libxml2/

make  && make install         //make成功后再执行make install

 

安装libmcrypt     (加密,认证)

cd/lamp/libmcrypt-2.5.8

./configure--prefix=/usr/local/libmcrypt/

make &&make install

*需要调用gcc-c++编译器,未安装会报错

 

安装libltbl,也在libmcrypt源码目录中,非新软件

 cd/lamp/libmcrypt-2.5.8/libltdl

 ./configure --enable-ltdl-install

 make

 makeinstall

 

 

 

 

 

安装zlib

cd /lamp/zlib-1.2.3

./configure                  #未指定安装目录,安装到系统指定目录/usr/local下的对                                  应目录,如bin将进入系统的bin,lib将进入系统的lib,这                                     种情况的配置文件,当软件安装完成后,会自动加入系统的                                 环境变量,可以直接调用

make &&make install

 

安装libpng

cd /lamp/libpng-1.2.31

./configure--prefix=/usr/local/libpng/

make &&make install

 

64为系统提示错误/usr/bin/ld: /usr/local/lib/libz.a(compress.o): relocation R_X86_64_32against `a local symbol' can not be used when

解决方法重新安装zlib

cd zlib-1.2.3

./configure

vim Makefile 找到CFLAGS=-O3 –DUSE_MMAP加上-fPIC

 

安装jpeg6

mkdir /usr/local/jpeg6

mkdir /usr/local/jpeg6/bin

mkdir /usr/local/jpeg6/lib

mkdir /usr/local/jpeg6/include

mkdir -p /usr/local/jpeg6/man/man1

cd /lamp/jpeg-6b

./configure --prefix=/usr/local/jpeg6--enable-shared --enable-static

make && make install

*--enable-shared与--enable-static参数分别为建立共享库和静态库使用的libtool

 

 

64位系统出错

./libtool–mode=compile gcc -O2 -I. -c ./jcapimin.c

make:./libtool: Command not found
make: *** [jcapimin.lo] Error 127

 

需要更新libtool到最新版本

#cp/usr/share/libtool/config/config.sub .
#cp /usr/share/libtool/config/config.guess .

 

 

安装freetype

 cd/lamp/freetype-2.3.5

 ./configure --prefix=/usr/local/freetype/

 make

 makeinstall

 

安装autoconf

cd /lamp/autoconf-2.6.1

./configure

make && make install

 

 

安装gd库

mkdir /usr/local/gd2

 cd/lamp/gd-2.0.35

#png错误,修改方法:

vi gd_png.c

把#include “png.h”替换

#include "/usr/local/libpng/include/png.h"

#如果不做修改,phpinfo()显示出的png的支持为disable

./configure --prefix=/usr/local/gd2/--with-jpeg=/usr/local/jpeg6/ --with-freetype=/usr/local/freetype/--with-png=/usr/local/libpng/

#word中两行以上的命令,要在记事本中消除换行格式才能粘贴到linux命令行

 

 Make

#如果出现错误,把上面的两步重新执行一次.

 makeinstall

 * 若前面配置zlib时没有指定安装目录,gd配置时不要添加--with-zlib=/usr/local/zlib/参数

php5以上需要2.1以上版本的gd库

 

安装apache

cd /lamp/httpd-2.2.9

./configure--prefix=/usr/local/apache2/ --sysconfdir=/usr/local/apache2/etc/--with-included-apr --enable-so --enable-deflate=shared --enable-expires=shared--enable-rewrite=shared

 

 make

 make install

 

启动Apache测试:

/usr/local/apache2/bin/apachectl restart

查看进程:

ps -le | grep httpd

 

查看apache模块:

/usr/local/apache2/bin/apachectl –l

#share  动态模块或动态库文件

Php5 rewrite

#static  静态模块或表态库文件

Server-status

Userdir

Virtual host

 测试:

 http://192.168.100.1/index.html

 

 “itworks”

 

设置Apache随机启动

 Vi /etc/rc.local

 /usr/local/apache2/bin/apachectl restart

 

 

 

安装ncurses

使用1方法或2方法均可

1.yum –y install ncurses*

2.源代码编译:

cd /lamp/ncurses-5.6

./configure --with-shared --without-debug--without-ada --enable-overwrite

make

make install

* 若不安装ncurses编译MySQL时会报错

* --without-ada参数为设定不编译为ada绑定,因进入chroot环境不能使用ada --enable-overwrite参数为定义把头文件安装到/tools/include下而不是/tools/include/ncurses目录

重点是将ncurses-devel安装上去,在系统安装时选中开发工具,则ncurses-5.5-24.20060715是安装好的,缺少一个ncurses-devel.i386包

 

 

 

安装MySQL

 useradd mysql

* 添加用户组mysql ,将mysql用户默认组设置为mysql用户组

cd /lamp/mysql-5.1.59

./configure --prefix=/usr/local/mysql--without-debug --enable-thread-safe-client --with-pthread --enable-assembler--enable-profiling --with-mysqld-ldflags=-all-static--with-client-ldflags=-all-static --with-client-ldflags=-ltinfo--with-extra-charsets=all --with-plugins=all --with-mysqld-user=mysql--without-embedded-server --with-server-suffix=-community--with-unix-socket-path=/tmp/mysql.sock

 make

 makeinstall

 * --with-extra-charsets=all参数为安装所有字符集

#如果不行的话,make clean 后再make ;make install,这样去试一下,默认是不支持innodb存储引擎的.其中--with-plugins=all可以把innodb加载进来.

 

 

拷贝配置文件模板

1.cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf

 

修改MySQL配置文件

1.[client]

default-character-set=utf8

#客户端字符集

#连接字符集

 

2.[ mysqld]

character-set-server = utf8

#服务器字符集

#数据库字符集

 

collation-server = utf8_general_ci

#服务器,库,表的校验字符集

#default-storage-engine=innodb       #看情况决定是否更改此处

#把默认的表引擎改为innodb

* 生成MySQL配置文件

 

重启服务

杀进程 pkill mysqld

启动    /usr/local/mysql/bin/mysqld_safe--user=mysql &

 

 Setfacl –m u:mysql:rwx–R /usr/local/mysql

 Setfacl –m d:u:mysql:rwx –R /usr/local/mysql

 

 安装数据库* acl来让mysql用户对/usr/local/mysql有所有权限

/usr/local/mysql/bin/mysql_install_db--user=mysql

 * 创建数据库授权表

启动MySQL服务

1.用原本源代码的方式去使用和启动mysql

/usr/local/mysql/bin/mysqld_safe--user=mysql &

2.重启以后还要生效:

Vi /etc/rc.local

/usr/local/mysql/bin/mysqld_safe--user=mysql &

4./usr/local/mysql/bin/mysqladmin-uroot password kkk 

#给mysql用户root加密码.密码为kkk

 /usr/local/mysql/bin/mysql -u root -pkkk test

mysql>show databases;

mysql>use test

mysql>show tables;

#进入mysql以后用set来改密码.

 mysql> exit

登录MySQL客户端控制台设置指定root密码

 

 

 

安装libiconv

./configure--prefix=/usr/local/libiconv

 

安装php

编译前确保系统已经安装了libtool和libtool-ltdl软件包,若没有安装使用yum或rpm安装下:

yum install libtool*

yum install libtool-ltdl*

 

 cd/lamp/php-5.2.6

./configure--prefix=/usr/local/php/ --with-config-file-path=/usr/local/php/etc/--with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql/--with-libxml-dir=/usr/local/libxml2/ --with-jpeg-dir=/usr/local/jpeg6/--with-png-dir=/usr/local/libpng/ --with-freetype-dir=/usr/local/freetype/--with-gd=/usr/local/gd2/ --with-iconv=/usr/local/libiconv --with-mcrypt=/usr/local/libmcrypt/--with-mysqli=/usr/local/mysql/bin/mysql_config --enable-soap--enable-mbstring=all --enable-sockets

* 若前面配置zlib时没有指定安装目录,PHP配置时不要添加--with-zlib-dir=/usr/local/zlib/参数

若在gd部分一直编译不过去,可以尝试yum install php-gd,然后--with-gd的时候省略掉路径

make

 make install

------------php5.5安装配置

 

./configure --prefix=/usr/local/php/--with-config-file-path=/usr/local/php/etc/--with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql/--with-libxml-dir=/usr/local/libxml2/ --with-jpeg-dir=/usr/local/jpeg6/ --with-png-dir=/usr/local/libpng/--with-freetype-dir=/usr/local/freetype/ --with-gd=/usr/local/gd2/--with-mcrypt=/usr/local/libmcrypt/--with-mysqli=/usr/local/mysql/bin/mysql_config --with-xpm-dir=/usr/lib64 --with-iconv=/usr/local/libiconv --with-zlib --with-bz2--enable-zip --enable-soap --enable-mbstring=all --enable-sockets

php5.6.30安装配置

’./configure' \

'--prefix=/usr/local/php/' \

'--with-config-file-path=/usr/local/php/etc/'\

'--with-apxs2=/usr/local/apache2/bin/apxs'\

'--with-mysql=/usr/local/mysql/' \

'--with-libxml-dir=/usr/local/libxml2/' \

'--with-jpeg-dir=/usr/local/jpeg6/' \

'--with-png-dir=/usr/local/libpng/' \

'--with-freetype-dir=/usr/local/freetype/'\

'--with-gd=/usr/local/gd2/' \

'--with-mcrypt=/usr/local/libmcrypt/' \

'--with-mysqli=/usr/local/mysql/bin/mysql_config'\

'--with-xpm-dir=/usr/lib64' \

'--with-iconv=/usr/local/libiconv' \

'--with-zlib' \

'--with-bz2' \

'--enable-zip' \

'--enable-soap' \

'--enable-mbstring=all' \

'--enable-sockets' \

’--enable-opcache’ \

 

生成php.ini(php的配置文件)

cp /lamp/php-5.2.6/php.ini-dist /usr/local/php/etc/php.ini

测试apachephp的连通性,apache是否能解析php文件

 

让apache支持php代码 :

vi/usr/local/apache2/etc/httpd.conf

AddTypeapplication/x-httpd-php .php .phps

DirectoryIndex index.html index.php   添加PHP默认主页类型

重启Apache服务:

/usr/local/apache2/bin/apachectl  restart

 

测试:vi /usr/local/apache2/htdocs/test.php

      <?php

              phpinfo();

 ?>

通过浏览器测试:

http://192.168.255.1/test.php

 

编译安装memcache模块

tar zxvf memcache-2.2.5.tgz

cd memcache-2.2.5

/usr/local/php/bin/phpize        //专为php添加模块使用

./configure--with-php-config=/usr/local/php/bin/php-config

make && make install

编译安装 PDO_MYSQL

tar zxvf /lamp/PDO_MYSQL-1.0.2.tgz

cd /lamp/PDO_MYSQL-1.0.2/

/usr/local/php/bin/phpize

./configure --with-php-config=/usr/local/php/bin/php-config--with-pdo-mysql=/usr/local/mysql

make && make install

如果出现找不到mysql.c的错误,ln -s/usr/local/mysql/include/mysql/* /usr/local/include/

 

修改php.ini

设置模块的目录:

extension_dir ="/usr/local/php//lib/php/extensions/no-debug-non-zts-20060613/"

extension=memcache.so;

extension=pdo_mysql.so;

 

修改php文件生效:

/usr/local/apache2/bin/apachectl restart

 

#安装Zend加速器

cd /lamp/ZendOptimizer-3.2.6-linux-glibc21-i386

./install.sh

 

#安装memcache源代码

http://memcached.googlecode.com/files/memcached-1.4.10.tar.gz

首先安装依赖包libevent

Yum –y install libevent*

#主包已经安装,别忘记安装libevent-devel*,不然./configure过不去

Tar xzf /lamp/memcached-1.4.10.tar.gz

Cd /lamp/memcached-1.4.10

./configure --prefix=/usr/local/memcache

Make && make install

Useradd memcache

#因为系统不能用root运行memcache软件

/usr/local/memcache/bin/memcached -umemcache&     #后台运行

Netstat –tunpl|grep :11211

telnet 192.168.10.1 11211

stats

写入自启动:

Vi /etc/rc.local

/usr/local/memcache/bin/memcached –umemcache&

#如何杀掉后台进程,用kill%1,查看进程用jobs

#安装brocms源码

主要是为了测试lamp环境编译是否成功,主要测试以下几个地方:

1.      pdo

2.      pdo-mysql

3.      memcache

#要注意memcache,因为它有两个源代码包,一个是php驱动库包(memcache-2.2.5.tgz),另一个是memcache主程序源代码包(memcached-1.4.10.tar.gz);

 

Apache服务器配置

 

apache基本知识

/usr/local/apache2/                #apache主目录

/usr/local/apache2/htdocs       #网站根目录

/usr/local/apache2/bin/httpd   #执行程序

/usr/local/apache2/bin/apachectl       #服务脚本

/usr/local/apache2/logs/access_log    #访问日志

/usr/local/apache2/logs/error_log      #错误日志

/usr/local/apache2/etc/httpd.conf      #主配置文件

/usr/local/apache2/etc/extra/           #模板配置文件

index.html                                     #默认首页

 

apache配置文件

ServerRoot   "/usr/local/apache2"     #apache的主目录

Listen  80                                       #在所有接口上监听80端口

LoadModulephp5_module                #动态加载php5模块或库文件

User daemon                   #httpd进程的执行者,httpd进程创建文件的所有者

=>ps -ef |grep httpd

Group daemon                               #httpd进程创建的文件的所属组

ServerAdmin you@example.com       #管理员邮箱

ServerName www.example.con:80         #apache主机名

192.168.100.1:80

DocumentRoot   "usr/local/apache2//htdocs"    #网站根目录

 

#apache的目录权限

<Directory/>

 

<Directory>

#apache控制系统中/目录权限,拒绝所有人访问的,权限是服务权限

 

<Directory"/usr/local/apache2//htdocs">

Options Indexes FollowSymLinks

AllowOverride None

Order deny,allow             

#Deny from all            #可以设置先拒绝后允许,标准配置方法

Allow from all

<Directory>

网站根目录的权限控制

 

Errorlog"log/error_log"      #错误日志

Customlog"logs/access_log" common         #访问日志所在的地方

 

AddTypeapplication/x-httpd-php .php         

#支持php脚本,而且能够调用LoadMoudle中的php模块去解析php脚本

ErrorDocument404 /missing.html      #当页面不存在时显示这个文件

 

apache个人主页

vi/usr/local/apache2/etc/httd.conf

UserDirpublic_html

<Directory

 

useradd user1                  #准备user1用户

 

su - user1

mkdirpublic_html

echo user1>public_html/index.html

httpd://192.168.100.1/~user1          #测试

 

#注意系统权限

setfacl -mu:apache:rwx -R /home

setfacl -md:u:apache:rwx -R /home

 

 

apache虚拟目录

作用:

空间扩展

vi /usr/local/apache2/etc/httpd.conf

 

apache目录访问控制(针对目录的访问控制)

1.options

indexes                 

#开启网站列表页。文件下载效果,做测试时使用,网站上线时要将其关闭。

multiviews

#多视图,试探性的填补后缀,有安全问题:当web目录下有个web.html,如果直接 输入web,将直接打开web.html,那么web目录就无法进入

followsymlinks

#能够看到快捷方式

2.allowoverride       #用户授权和重写规则

all               

#/web/uploads中去找一个文件.htaccess文件,这个文件中一般写:用户授权和重写规则

none

3.order

order allow,deny     #先允许后拒绝,后面的权限优先

4.allow

allow from all          #允许所有

5.deny

deny from all          #拒绝所有

 

apache用户授权

1.vi .htaccess     #创建.htaccess用户授权文件

 

2.生成密码文件.htpasswd

 

3.重启apache并测试

 

apache虚拟主机

#一台服务器上可以放多个网站--每个网站都有一个域名

技术背景:

1.同一台服务器,不同的ip,相同端口

2.相同ip,不同端口

3.相同ip,相同端口,不同域名(需要apache的支持)

 

apache重写功能-rewrite

目的: 1、搜索引擎收录

2、网站升级时,做页面跳转

http://localhost/index.php?id=1    #收录效果不好

http://localhost/index_1.html       #收录效果好

http://localhost/index/id/1

http://localhost/index_2.html

 

配置

1、vi /usr/local/apache2/etc/httpd.conf

 

做重写功能时,在配置文件中网站设置的options中加入followsymlinks,关掉multiviews可以解决权限问题

2、vi /baidu/.htaccess            #将.htaccess写在网站根目录

 

apache监控功能->server-status

 

SetHandlerserver-status

 

apache cgi网关程序(shell脚本|python脚本|shtml技术)

 

shtml技术是在linux的.s文件中嵌套html语句或cgi脚本

 

1.放网页:

cd/usr/local/apache2/cgi-bin/

vi index.cgi

 


iptables防火墙

1. 防火墙过滤(osi七层模型)

 

 

在iptables服务器两块网卡的OSI模型中5一条链的应用位置

nat->network address translation

2. snat技术   基于源地址的地址转换技术

3. pat技术    基于端口的地址转换技术(可以绑定拨号服务器的网卡端口,省去修改规则的麻烦)

4. dnat技术--路由器上做端口转换

 

源端口

1024-65535之间的端口

一台电脑端口1-65535个端口

 

标准端口:1-1024

非标端口:1024-65535

 

私有网段

 

iptables:

1.  表

2.  链           与链有关的全部大写

3.  规则

4.动作         与动作有关的全部大写

 

三个表

     Filter:用于设置包过滤      input、output、forward链放入此表

     NAT:用于设置地址转换   prerouting、postrouting、output链放入此表

     Mangle:用于设置网络流量整形等应用    5个链都可以在

 

链:

1.  input                 来访问防火墙服务器本身

2.  output          从防火墙发出去的数据

3.  forward             穿过防火墙去其他地方

沿防火墙服务器路由管道访问外网,从内到外,从外到内,都要过forward

当需要让一台linux服务器做路由器时,需要打开其路由管道:

echo1 > /proc/sys/net/ipv4/ip_forward  (/proc下的文件是计算机临时配置,重启就丢失)

4.  prerouting     =>dnat =>把目的公用ip转成公司内部私有ip

数据包准备进来,从2层到3层之间,准备进入路由层之前时

5.  postrouting   =>snat =>把私有ip改成公司拨号的公用ip

数据包准备出去,从3层到2层之间,刚刚越过路由层时

 

 

防火墙环境配置

配置ip

xp 192.168.100.254(vm1)

iptables    左侧192.168.100 .1(vm1)   右侧200.168.100.1(vm2)

web server    200.168.100.254(vm2)

测试是否通路

先iptables机器ping两侧机器

内部xp与外部的web之间本身是通不了的

1、添加xp网关192.168.100.1

2、添加web的网关route add default gw200.168.100.1

3、打开iptables的路由通路

echo 1 >/proc/sys/net/ipv4/ip_forward   #可以写入启动项/etc/rc.local

 

需求1:

不让xp通过防火墙去访问外部的web的web页面(只是阻止对80端口的访问)

iptables -t(表) filter -A(追加) FORWARD -s(源) 192.168.100.254 -d(目的)200.168.100.254 -p tcp --dport(所阻止的目的端口) 80 -jDROP(丢弃)

 

需求2:

iptables可以ping通web,但是web不能ping通iptables

iptables -t filter -A INPUT -s200.168.100.254 -p icmp --icmp-type echo-request -j DROP

 

需求3:

通过防火墙机器让公司内部的xp可以去外部上网

iptables -t nat -A POSTROUTING -s192.168.100.0/24 -o eth1 -j SNAT --to 200.168.100.1

 

需求4:

保障每天公司内部的员工都可以上网,不用每天去加一条snat(将ip绑定到端口上,和端口的ip保持一致)

iptables -t nat -A POSTROUTING -s192.168.100.0/24 -o eth1 -j MASQUERADE

 

需求5:

让公司外部的人可以访问公司内部的私有web服务器

(xp 去掉网关,web 加上网关,左侧为外部上网用户,右侧为内部web服务器)

iptables -t nat -A PREROUTING -d 200.168.100.1(左侧链接外网网卡ip) -j DNAT --to 192.168.100.254(内部服务器ip)

 

 

 

语法:iptables 表链 规则 动作       #与链和动作有关的全部大写,其他小写

表:

-t   filter|nat|mangle     不写表的话就默认对多有表的链进行操作

 

链:

-L           查看链内的规则     --line-numbers -n

--line-numbers   显示编号

-n                     总是显示destination的ip地址

-F           清除链内的规则

-X           删除自定义链

-A           在链的最后追加一条规则

-I            在链的最前面插入一条规则

iptables -I INPUT 3 -s 192.168.100.254 -j DROP

-E           改变链名

-D           删除链内的规则(可以定向删除某条)

iptables -D INPUT 3

-R           替换链内规则

iptables -R INPUT 3 -s 192.168.100.250 -j DROP

-P           修改policy ACCEPT,链的默认动作

 

规则:

-s            源ip

-d           目的ip

-p           tcp  --sport|--dport 源端口|目的端口

-p           icmp  --icmp-type echo-request|echo-reply ping请求(8)和回应(0)

-i            进入的网卡

-o           出去的网卡

 

动作:

-j

DROP           丢弃

ACCEPT        默认是接受

REJECT         拒绝

SNAT            源IP地址转换技术

DNAT           目的IP地址转换结束

MASQUERADE    内部ip端绑定网卡使用(pat技术)

REDIRECT     重定向

 

保证防火墙服务器重启后策略还在

service iptables save         #将防火墙策略加入系统启动项

 


 

 

 

零散知识点

 

strings     读取二进制文件头,如strings  /bin/cp

ls -lR       #递归的查看目录中的文件

 

如何验证/etc/rc.local是否配置正确?

source/etc/rc.local      #测试启动加载文件配置是否正确 /etc/rc.local

 

apache是进程管理还是线程管理?

apache是进程管理,apache以后的方向是进程带线程管理

 

线程管理:并发性好,不稳定,分配内存快,回收内存慢

进程管理:进程之间不相关,一个进程挂掉,其他进程不受其影响,进程数量可以自己 调,回收内存快,稳定性好

 

面试注意:403(权限)、304等错误‘

 

主机厂商常见的技术:

虚拟主机,vps,vmware的esx

 

如何重启服务(mysql为例)

1、杀掉进程

pkill  mysqld

2、启动

./mysqld_safe--use=mysql &      #&符号指的是后台运行

 

 

 

source /etc/rc.local      //模拟启动过程,检测其中的设置是否能正常启动

 

pkill mysqld                 //关闭进程

 

netstat -tunpl |grep :3306  //查看端口

 

 

平滑重启kill -HUP pid

如果想要更改配置而不需停止并重新启动服务,请使用该命令。在对配置文件作必要的更改后,发出该命令以动态更新服务配置。

 

 

mysql

远程连接MySql数据库时:

ERROR 1045(28000): Access denied for user 'root'@'localhost' (using password: YES)

远程连接被拒绝;

解决方法:

MySQL> useMySQL; 
Database changed 
MySQL> grant all privileges on *.* to ‘yourUser’@'%' identified by ‘yourPassword’; 
Query OK, 0 rows affected (0.00 sec) 
*.*标示所有数据库下的所有表,’*’.*标示数据库*下的所有表
MySQL> grant all on *.* to ‘yourUser’@'%' identified by ‘yourPassword’;
Query OK, 0 rows affected (0.00 sec) 
%号出可以填写允许访问的IP地址或者主机名,%标示所有的IP
Flush privileges;
Query OK, 0 rows affected (0.00 sec) 
Mysql> exit;

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值