Got error 28 from storage engine

使用mysqldump 备份数据库时,报错,错误信息如下:
mysqldump: Error: 'Got error 28 from storage engine' when trying to dump tablespaces
mysqldump: Couldn't execute 'show fields from `pre_common_addon`': Got error 28 from storage engine (1030)

使用计划任务备份时,总有这样的错误,而手动执行时,又很正常。
网上查找了些资料,猜测可能是因为磁盘空间不够导致的,但是一直想不通为什么手动执行又不抱错。最后研究了下备份脚本,发现问题所在,脚本的逻辑是,先备份,最后有一条命令就是删除创建日期大于1天的文件。其实问题就是在这里了,因为脚本备份时,磁盘空间已经不足了,因为我的表很大,十几个G,不够创建临时表的空间,导致不能备份完成,而最后执行删除创建日期大于1天的文件后,腾出空间,所以我手动执行又没有问题了。

解决办法:把脚本改动了一下,首先是删除旧文件,腾冲足够空间,然后再备份。这里还要注意的是,如果是找创建日期大于一天的文件,用-mtime  +1 是不对的,要使用 -mmin +1200  (大于20小时),至于为什么,你自己想想吧。

MySQL5.5新特性

新一代MySQL产品---MySQL5.5 已经面世,较之之前的5.1版本,将获得诸多特性方面的提升,简单总结如下:

  1. 默认存储引擎更改为InnoDB

  InnoDB作为成熟、高效的事务引擎,目前已经广泛使用,但MySQL5.1之前的版本默认引擎均为MyISAM,此次MySQL5.5终于 做到与时俱进,将默认数据库存储引擎改为InnoDB,并且引进了Innodb plugin 1.0.7。此次更新对数据库的好处是显而易见的:InnoDB的数据恢复时间从过去的一个甚至几个小时,缩短到几分钟(InnoDB plugin 1.0.7,InnoDB plugin 1.1, 恢复时采用红-黑树)。InnoDB Plugin 支持数据压缩存储,节约存储,提高内存命中率,并且支持adaptive flush checkpoint, 可以在某些场合避免数据库出现突发性能瓶颈。

  Multi Rollback Segments: 原来InnoDB只有一个Segment,同时只支持1023的并发。现已扩充到128个Segments,从而解决了高并发的限制。

  2. 多核性能提升

  Metadata Locking (MDL) Framework替换LOCK_open mutex (lock),使得MySQL5.1及过去版本在多核心处理器上的性能瓶颈得到解决,官方表示将继续增强对MySQL多处理器支持,直至MySQL性能 “不受处理器数量的限制”

  3. 复制功能(Replication)加强

  MySQL复制特性是互联网公司应用非常广泛的特性,作为MySQL最实用最简单的扩展方式,过去的异步复制方式已经有些不上形势,对某些用户 来说“异步复制”意味着极端情况下的数据风险,MySQL5.5将首次支持半同步(semi-sync replication)在MySQL的高可用方案中将产生更多更加可靠的方案。另外Slave fsync tunning;Relay log corruption recovery和Replication Heartbeat也将实现

  4. 增强表分区功能

  MySQL 5.5的分区对用户绝对是个好消息,更易于使用的增强功能,以及TRUNCATE PARTITION命令都可以为DBA节省大量的时间,有时对最终用户亦如此:

  1) 非整数列分区:任何使用过MySQL分区的人应该都遇到过不少问题,特别是面对非整数列分区时,MySQL 5.1只能处理整数列分区,如果你想在日期或字符串列上进行分区,你不得不使用函数对其进行转换。很麻烦,而MySQL 5.5中新增了两类分区方法,RANG和LIST分区法,同时在新的函数中增加了一个COLUMNS关键词。在MySQL 5.1中使用分区另一个让人头痛的问题是date类型(即日期列),你不能直接使用它们,必须使用YEAR或TO_DAYS转换这些列,但在MySQL 5.5中情况发生了很大的变化,现在在日期列上可以直接分区,并且方法也很简单;

  2) 多列分区:COLUMNS关键字现在允许字符串和日期列作为分区定义列,同时还允许使用多个列定义一个分区;

  3) 可用性增强:truncate分区。分区最吸引人的一个功能是瞬间移除大量记录的能力,DBA都喜欢将历史记录存储到按日期分区的分区表中,这样可以定期 删除过时的历史数据。 但当你需要移除分区中的部分数据时,事情就不是那么简单了,删除分区没有问题,但如果是清空分区,就很头痛了,要移除分区中的所有 数据,但需要保留分区本身,你可以:使用DELETE语句,但我们知道DELETE语句的性能都很差。使用DROP PARTITION语句,紧跟着一个EORGANIZE PARTITIONS语句重新创建分区,但这样做比前一个方法的成本要高出许多。MySQL 5.5引入了TRUNCATE PARTITION,它和DROP PARTITION语句有些类似,但它保留了分区本身,也就是说分区还可以重复利用。TRUNCATE PARTITION应该是DBA工具箱中的必备工具;

  4) 更多微调功能:TO_SECONDS:分区增强包有一个新的函数处理DATE和DATETIME列,使用TO_SECONDS函数,你可以将日期/时间列转换成自0年以来的秒数,如果你想使用小于1天的间隔进行分区,那么这个函数就可以帮到你。

  5. Insert Buffering 如果在buffer pool中没找到数据,那么直接buffer起来,避免额外的IO;Delete & Purge Buffering 跟插入一样,如果buffer pool中没有命中,先buffer起来,避免额外的IO。

  6. Support for Native AIO on Linux

  以上的特性在MySQL 5.5的社区版当中都将包括,在MySQL企业版当中,除以上更新之外,Oracle还加强了更多实用的企业级功能,包括:

  1. 实现在线物理热备

  MySQL 企业版将包含Innodb Hotbackup(这也许是MySQL和InnDB多年之后重新聚首的新亮点),从而一举解决过去MySQL无法进行可靠的在线实时物理备份的问题, InnoDB Hot Backup 不需要你关闭你的服务器也不需要加任何锁或影响其它普通的数据操作,这对MySQL DBA来说应该是一个不错的消息。

  2. MySQL Enterprise Monitor 2.2 & Oracle Enterprise Monitor

  是的,你没有看错,MySQL将可以被Oracle Enterprise Monitor监控,这是一个实现起来并不复杂,但在过去绝无可能的变化。并且MySQL企业版监控器(MySQL Enterprise Monitor)得到了更大的加强,版本更新至2.2,对MySQL服务器资源占用降低到可以忽略的地步,集成了监控,报警,SQL语句分析和给出优化建 议,MySQL的一些开源监控方案相比之下显得过于简陋,对企业客户来说,MySQL变得更加可靠。

  3. MySQL Workbench

  过去MySQL的图形界面工具做的实在是令人难以恭维,当然这也给众多MySQL管理工具提供了市场空间,现在Oracle打算将MySQL做 得比SQL-Server更加简单易用,MySQL Workbench是一款专为MySQL设计的ER/数据库建模工具,可以用来设计和创建新的数据库图示,建立数据库文档,以及进行复杂的MySQL 迁移等操作,因此内置workbench将使MySQL使用起来更简便高效。

  4. 关于未来的重要提醒:Oracle的管理工具,MySQL也将能够使用,当然MySQL 5.5我们还没看到这个变化,但变化已经在时间表上,MySQL社区版也能够被Oracle管理工具管理,前提你得是Oracle数据库的用户。

mysqldump 备份和恢复指定表

备份:

mysqldump -u user -ppp db gk_info > Z:\gbinfo.sql

tab1 tab2 >

恢复:

mysql -u root -ppp --default-character-set=utf8 catalog < E:\work\dbupdate\gbinfo.sql


参考:

1.拷备文件          :   (保证数据库没有写操作(可以给表上锁定))直接拷贝文件不能移植到其它机器上,除非你正在拷贝的表使用MyISAM存储格式
2.mysqldump    :   mysqldump生成能够移植到其它机器的文本文件

例:
备份整个数据库     -->     mysqldump db1 >/backup/db1.20060725   
压缩备份              -->     mysqldump db1 | gzip >/backup/db1.20060725
分表备份              -->     mysqldump db1 tab1 tab2 >/backup/db1_tab1_tab2.sql
直接远程备份        -->    mysqladmin -h boa.snake.net create db1
                           -->     mysqldump db1 | mysql -h boa.snake.net db1

复制备份表           -->     cp tab.*     backup/


恢复
用最新的备份文件重装数据库。如果你用mysqldump产生的文件,将它作为mysql的输入。如果你用直接从数据库拷贝来的文件,将它们直接拷回数据库目录,然而,此时你需要在拷贝文件之前关闭数据库,然后重启它。

MySQL 二进制源码包安装

一般我们平时安装MySQL都是源码包安装的,但是由于它的编译需要很长的时间,所以,我们公司的工程师都建议我们安装二进制免编译包。你可以到MySQL官方网站去下载,也可以到comsenz官方网站下载,下载地址为:http://syslab.comsenz.com/downloads/linux/ 。
下载下来以后,你要做的几步为:
1 解压   tar zxvf mysql-5.0.77-linux-x86_64-icc-glibc23.tar.gz
2 把解压完的数据放到合适的位置  mv mysql-5.0.77-linux-x86_64-icc-glibc23 /usr/local/
3 做一个软链接,这样做的目的是方便日后升级  ln -s /usr/local/mysql-5.0.77-linux-x86_64-icc-glibc23 /usr/local/mysql
4 建立mysql用户  useradd mysql
5 初始化数据库  cd  /usr/local/mysql/  ; ./scripts/mysql_install_db --user=mysql  //初始化库的时候可以只加一个--user,另外要想指定data目录的话,需要加上 --datadir=  这个参数,如,我想让数据库目录在 /home/mysql 下,则要这样   ./scripts/mysql_install_db --user=mysql  --datadir=/home/mysql
6 拷贝配置文件  cp  support-files/my-large.cnf /etc/my.cnf
7 拷贝启动脚本文件 cp support-files/mysql.server  /etc/init.d/mysqld
8 修改权限 chmod 755 /etc/init.d/mysqld
9 修改启动脚本  vim /etc/init.d/mysqld   //如果在初始话的时候指定了datadir,则要修改这个文件中的datadir部分,否则启动不了
10 启动MySQL  /etc/init.d/mysqld start

mysql innodb plugin 安装

InnoDB Plugin较之Built-in版本新增了很多特性:包括快速DDL、压缩存储等,而且引入了全新的文件格式Barracuda。众多测试也表明,Plugin在很多方面优于Built-in版本。当前Plugin版本是1.0.6,一个RC版本。MySQL的官方版本中从5.1.42开始也内置了InnoDB Plugin1.0.6。

innodb 不断更新的版本带来了一些有用的特性, 我们可以通过innodb plugin来在现有mysql版本(5.1.x)中更新innodb的版本, 从而可以在避免进行mysql整体升级的前提下使用上需要的功能。

下面以二进制分发版本(5.1.41)为例,说明下升级步骤(适用于5.1.38以上版本,以下版本需要下载innodb版本并替换目录):

1.  修改my.cnf 配置文件,临时注销所有innodb选项。
添加选项
ignore_builtin_innodb    #忽略InnoDB built-in

2. 重启mysql 使ignore_builtin_innodb选项生效

3. 使用mysql管理帐号登录进行插件安装
INSTALL PLUGIN INNODB SONAME 'ha_innodb_plugin.so';
INSTALL PLUGIN INNODB_TRX SONAME 'ha_innodb_plugin.so';
INSTALL PLUGIN INNODB_LOCKS SONAME 'ha_innodb_plugin.so';
INSTALL PLUGIN INNODB_LOCK_WAITS SONAME 'ha_innodb_plugin.so';
INSTALL PLUGIN INNODB_CMP SONAME 'ha_innodb_plugin.so';
INSTALL PLUGIN INNODB_CMP_RESET SONAME 'ha_innodb_plugin.so';
INSTALL PLUGIN INNODB_CMPMEM SONAME 'ha_innodb_plugin.so';
INSTALL PLUGIN INNODB_CMPMEM_RESET SONAME 'ha_innodb_plugin.so'


4.查看版本select @@innodb_version;
+------------------+
| @@innodb_version |
+------------------+
| 1.0.5            |
+------------------+

5.  修改my.cnf配置文件,打开先前注释的innodb选项
如果需要使用barracuda可使用以下选项
innodb_file_format=barracuda  使用barracuda文件格式
innodb_file_per_table=1        使用barracuda文件格式需要采用单独表空间分配模式

6. 重启mysql

7. 检查日志确认确认是否存在异常
可能会发现如下新增信息
InnoDB: The InnoDB memory heap is disabled             [如果采用系统内存分配默认会出现此信息,如果采用其他内存分配可以设置innodb_use_sys_malloc=0来使用指定内存,比如tcmalloc];
InnoDB: Mutexes and rw_locks use GCC atomic builtins  [如果你使用的GCC版本高于4.12,那么互斥量(mutex)和读写锁(read/write lock)可以通过GCC内置的atomic_memory_access功能来实现,并打印这些信息]
110114 17:37:26  InnoDB: highest supported file format is Barracuda. [支持了Barracuda文件格式]

至此innodb plugin 升级完成。

这里列出一些有吸引力的特性   
1. Barracuda 的compressed表自动对长的数据格式进行压缩 (比如blob,text,vachar等) 还可以指定压缩比
语句如下
alter table roberttest ROW_FORMAT=Compressed KEY_BLOCK_SIZE=8;   

2. 添加辅助索引,不需要再通过建立临时表来进行过渡,提升了效率。
具体步骤为
(摘自mysql手册:InnoDB Pluing在删除一个secondary indexes时,先更改一下InnoDB内部数据字典和MySQL的数据字典,然后把释放的空间归还给InnoDB以供重复使用。如果是增加一个secondary indexes,还是有点复杂的,Plugin先将数据表中的数据取出到memory buffers或者临时表中,并按照新建索引列排好序,然后建立索引的B-Tree。 )

3. 对多核CPU和大内存提供更好的支持


另外 一篇 MySQL 5.1.24rc + innodb plugin尝鲜

mysql 5.0版本修改普通用户的密码

1. mysql -uroot -ppassword  

2. mysql> UPDATE mysql.user SET password=PASSWORD("newpwd") WHERE user='username' ; FLUSH PRIVILEGES;

mysql 单表备份脚本

#/bin/bash
DATE=`date +%Y-%m-%d`
MYSQL="mysql -uroot -h xxx "
for db in `$MYSQL -e "show databases"|sed '1d'`; do
    mkdir -p $db_$DATE
    cd $db_$DATE
    for table in `$MYSQL $db -e "show tables"|sed '1d'`;do
        mysqldump --opt $db $table |gzip >$db_$table.sql.gz
    done
done

MySQL Proxy安装和配置指南

本帖最后由 lqph3387 于 2010-12-9 09:12 编辑

一,环境如下:
  1、MySQL Proxy 安装地址:192.168.1.210 (简称A)
   2、MySQL 主服务器地址:192.168.1.212(简称B)
   3、MySQL 从服务器地址192.168.1.216(简称C)
如果目前B和C是Master-Slave模式(可以先在C上停止STOP SLAVE,不然等会在过程中我们往主库写数据的时候无法区分究竟是写到B还是C了,因为即使写到B机器上,我们在C机器上也能看到,因为通过replaction已经同步到C了,停掉slave的话,这样SQL语句一下子就看出来从哪里来的,让看众觉得有点啰嗦了

二,安装
下载已经编译好的安装包,或者预编译安装包均可,在这里,使用预编译版本
[root@ns ~]#  tar zxf mysql-proxy-0.6.0-linux-rhas4-x86.tar.gz

[root@ns ~]#  cd mysql-proxy-0.6.0-linux-rhas4-x86

#可以看到有2个目录
[root@ns mysql-proxy-0.6.0-linux-rhas4-x86]# ls
sbin  share

[root@ns mysql-proxy-0.6.0-linux-rhas4-x86]# mv sbin/mysql-proxy /usr/local/sbin/

[root@ns mysql-proxy-0.6.0-linux-rhas4-x86]# ls share
mysql-proxy         tutorial-constants.lua  tutorial-packets.lua     tutorial-rewrite.lua  tutorial-warnings.lua
tutorial-basic.lua  tutorial-inject.lua     tutorial-query-time.lua  tutorial-states.lua

#将lua脚本放到/usr/local/share下,以供启动脚本使用
[root@ns mysql-proxy-0.6.0-linux-rhas4-x86]# mv share/mysql-proxy /usr/local/share/

[root@ns mysql-proxy-0.6.0-linux-rhas4-x86]# strip /usr/local/sbin/mysql-proxy


三. 启动
编辑一下启动管理脚本:
[root@ns ~]# vim /etc/init.d/mysql-proxy

#!/bin/sh
export LUA_PATH=/usr/local/share/mysql-proxy/?.lua

mode=$1
if [ -z "$mode" ] ; then
  mode="start"
fi

case $mode in
  'start')
    mysql-proxy --daemon \
--admin-address=192.168.1.210:4401 \
--proxy-address=192.168.1.210:3307 \
--proxy-backend-addresses=192.168.1.212:3306 \   主库
--proxy-read-only-backend-addresses=192.168.1.216:3306 \   从库
--proxy-lua-script=/usr/local/share/mysql-proxy/rw-splitting.lua
#限制192.168.1.212为可写,192.168.1.216为只读
    ;;

  'stop')
    killall mysql-proxy
    ;;

  'restart')
    if $0 stop ; then
      $0 start
    else
      echo  "retart failed!!!"
      exit 1
    fi
    ;;
esac
exit 0

解释一下启动脚本:
--daemon 采用daemon方式启动
--admin-address=192.168.1.210:4401 指定mysql proxy的管理端口,在这里,表示本机的4401端口
--proxy-address=192.168.1.210:3307 指定mysql proxy的监听端口,也可以用 127.0.0.1:3307 表示
--proxy-backend-addresses=192.168.1.212:3306 指定写库mysql主机的端口
--proxy-read-only-backend-addresses=192.168.1.216:3306 指定只读的mysql主机端口
--proxy-lua-script=/usr/local/share/mysql-proxy/rw-splitting.lua 指定lua脚本,在这里,使用的是rw-splitting脚本,用于读写分离

想查看完整的mysql-proxy 参数可以运行以下命令查看:mysql-proxy  --help-all
运行以下命令启动/停止/重启mysql proxy:

[root@ns ~]# /etc/init.d/mysql-proxy start

[root@ns ~]# /etc/init.d/mysql-proxy stop

[root@ns ~]# /etc/init.d/mysql-proxy restart

四,使用MySQL Proxy
分别在192.168.1.212和192.168.1.216上安装mysql数据库,启动并添加一个用户
mysql>grant all privileges on test.* to abc@'%' identified by '123456';

在192.168.1.212的test数据库建立一个表hr
create table hr(id int(5),address char(255));

在192.168.1.216的test数据库建立一个表hr
create table hr(id int(5),name char(255));

两个表名字一样却有不同的字段。
在192.168.1.210上启动mysql-proxy
/etc/init.d/mysql-proxy start
[root@ns ~]# mysql -uabc -p123456 -h192.168.1.210 -P3307 test
对表进行查询
mysql> desc hr;
出现的表描述是C上的结构就对了。
对数据进行写操作
mysql> create table hr_boy(id int(5),name char(255));
然后去B上看看,如果B上多了一张表就对了

五,其他
mysql proxy还可以实现连接池的功能,因此,有了mysql proxy,就可以不用再担心连接数超限的问题了。
如果使用rw-splitting.lua脚本的话,最好修改以下2个参数的默认值:

min_idle_connections = 1
max_idle_connections = 3

Error: is marked as crashed and last (automatic?) repair

修复数据表操作:
1、service mysqld stop;
2、cd /var/lib/mysql/db_name/
3、myisamchk -r tablename.MYI (修复单张数据表)
myisamchk -r *.MYI (修复所有数据表)

如何正确关机

其实,在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。

linux和windows不同,在 Linux 底下,由于每个程序(或者说是服务)都是在在背景下执行的,因此,在你看不到的屏幕背后其实可能有相当多人同时在你的主机上面工作,例如浏览网页啦、传送信件啦以 FTP 传送档案啦等等的,如果你直接按下电源开关来关机时,则其它人的数据可能就此中断!那可就伤脑筋了!此外,最大的问题是,若不正常关机,则可能造成文件系统的毁损(因为来不及将数据回写到档案中,所以有些服务的档案会有问题!)。

如果你要关机,必须要保证当前系统中没有其他用户在线。可以下达 who 这个指令,而如果要看网络的联机状态,可以下达 netstat -a 这个指令,而要看背景执行的程序可以执行 ps -aux 这个指令。使用这些指令可以让你稍微了解主机目前的使用状态!(这些命令在以后的章节中会提及,现在只要了解即可!)

正确的关机流程为:sysnc --> shutdown --> reboot --> halt

sync 将数据由内存同步到硬盘中。

shutdown 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:

shutdown –h 10 ‘This server will shutdown after 10 mins’ 这个命令告诉大家,计算机将在10分钟后关机,并且会显示在登陆用户的当前屏幕中。

shutdown –h now 立马关机

shutdown –h 20:25 系统会在今天20:25关机

shutdown –h +10 十分钟后关机

shutdown –r now 系统立马重启

shutdown –r +10 系统十分钟后重启

reboot 就是重启,等同于 shutdown –r now

halt 关闭系统,等同于shutdown –h now 和 poweroff

最后总结一下,不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中。关机的命令有 shutdown –h now halt poweroff 和 init 0 , 重启系统的命令有 shutdown –r now reboot init 6.

下一章  忘记root密码如何做

忘记root密码如何做

以前笔者忘记windows的管理员密码,由于不会用光盘清除密码最后只能重新安装系统现在想想那是多么愚笨的一件事情同样linux系统你也会遇到忘记root密码的情况,如果遇到这样的情况怎么办呢?重新安装系统吗?当然不用!进入单用户模式更改一下root密码即可如何进入呢
1 重启linux系统

3 秒之内要按一下回车,出现如下界面

然后输入e

第二行最后边输入 single,有一个空格具体方法为按向下尖头移动到第二行,按“e”进入编辑模式

在后边加上single 回车

最后按“b”启动,启动后就进入了单用户模式了

此时已经进入到单用户模式了,你可以更改root密码了更密码的命令为 passwd



下一章  使用系统安装光盘的救援模式

使用系统安装光盘的救援模式

救援模式即rescue ,这个模式主要是应用于,系统无法进入的情况如,grub损坏或者某一个配置文件修改出错如何使用rescue模式呢?
光盘启动,按F5 进入rescue模式

输入linux rescue 回车

选择语言,笔者建议你选择英语

选择us 键盘




这里问你是否启动网络,有时候可能会联网调试我们选no

这里告诉我们,接下来会把系统挂载在/mnt/sysimage 其中有三个选项,Continue 就是挂载后继续下一步; Read-Only 挂载成只读,这样更安全,有时文件系统损坏时,只读模式会防止文件系统近一步损坏;Skip就是不挂载,进入一个命令窗口模式这里我们选择Continue。

至此,系统已经挂载到了/mnt/sysimage接下来回车,输入chroot /mnt/sysimage 进入管理员环境

Tips
其实也可以到rescue模式下更改root的密码的这个rescue模式和windows PE系统很相近当运行了chroot /mnt/sysimage/ 后,再ls 看到目录结构和原来系统中的目录结构是一样的没错!现在的环境和原来系统的环境是一模一样的你可以输入exit 或者按Ctrl + D退出这个环境然后你再ls 看一下

这个目录其实就是rescue模式下的目录结构,而我们的系统文件全部在 /mnt/sysimage目录下


下一章  Linux系统的远程登录

Linux系统的远程登录

首先要说一下,该部分内容对于linux初学者来讲并不是特别重要的,可以先跳过该章节,先学下一章,等学完后再回来看这一章
Linux大多应用于服务器,而服务器不可能像PC一样放在办公室,它们是放在IDC机房的,所以我平时登录linux系统都是通过远程登录的。Linux系统中是通过ssh服务实现的远程登录功能默认ssh服务开启了22端口,而且当我们安装完系统时,这个服务已经安装,并且是开机启动的所以不需要我们额外配置什么就能直接远程登录linux系统。ssh服务的配置文件为 /etc/ssh/sshd_config,你可以修改这个配置文件来实现你想要的ssh服务比如你可以更改启动端口为36000.
如果你是windows的操作系统,则Linux远程登录需要在我们的机器上额外安装一个终端软件目前比较常见的终端登录软件有SecureCRT, Putty, SSH Secure Shell等,很多朋友喜欢用SecureCRT因为它的功能是很强大的,而笔者喜欢用Putty,只是因为它的小巧以及非常漂亮的颜色显示不管你使用哪一个客户端软件,最终的目的只有一个,就是远程登录到linux服务器上这些软件网上有很多免费版的,你可以下载一个试着玩玩下面笔者介绍如何使用Putty登录远程linux服务器
如果你下载了putty,请双击putty.exe 然后弹出如下的窗口笔者所用putty为英文版的,如果你觉得英文的用着别扭,可以下载一个中文版的

因为是远程登录,所以你要登录的服务器一定会有一个IP或者主机名请在Host Name( or IP address) 下面的框中输入你要登录的远程服务器IP(如果你的linux还没有IP,那么请自行设置一个IP,如何设置请到后续章节查找),然后回车

此时,提示我们输入要登录的用户名

输入root 然后回车,再输入密码,就能登录到远程的linux系统了


下一章  使用密钥认证机制远程登录linux

使用密钥认证机制远程登录linux

SSH服务支持一种安全认证机制,即密钥认证所谓的密钥认证,实际上是使用一对加密字符串,一个称为公钥(public key)
任何人都可以看到其内容,用于加密;另一个称为密钥(private key),只有拥有者才能看到,用于解密通过公钥加密过的密文使用密钥可以轻松解密,但根据公钥来猜测密钥却十分困难。 ssh 的密钥认证就是使用了这一特性服务器和客户端都各自拥有自己的公钥和密钥如何使用密钥认证登录linux服务器呢?
首先使用工具 PUTTYGEN.EXE 生成密钥对打开工具PUTTYGEN.EXE后如下图所示:





该工具可以生成三种格式的key SSH-1(RSA) SSH-2(RSA) SSH-2(DSA) ,我们采用默认的格式即SSH-2(RSA)。Number of bits in a generated key 这个是指生成的key的大小,这个数值越大,生成的key就越复杂,安全性就越高这里我们写2048.





然后单击Generate 开始生成密钥对:





注意的是,在这个过程中鼠标要来回的动,否则这个进度条是不会动的





到这里,密钥对已经生成了你可以给你的密钥输入一个密码,(在Key Passphrase那里)也可以留空然后点 Save public key 保存公钥,点 Save private Key 保存私钥笔者建议你放到一个比较安全的地方,一来防止别人偷窥,二来防止误删除接下来就该到远程linux主机上设置了


1)创建目录 /root/.ssh 并设置权限


[root@localhost ~]# mkdir /root/.ssh mkdir 命令用来创建目录,以后会详细介绍,暂时只了解即可
[root@localhost ~]# chmod 700 /root/.ssh chmod 命令是用来修改文件属性权限的,以后会详细介绍


2)创建文件 / root/.ssh/authorized_keys
[root@localhost ~]# vim /root/.ssh/authorized_keys vim 命令是编辑一个文本文件的命令,同样在后续章节详细介绍


3)打开刚才生成的public key 文件,建议使用写字板打开,这样看着舒服一些,复制从AAAA开头至---- END SSH2 PUBLIC KEY ---- 该行上的所有内容,粘贴到/root/.ssh/authorized_keys 文件中,要保证所有字符在一行(可以先把复制的内容拷贝至记事本,然后编辑成一行载粘贴到该文件中)在这里要简单介绍一下,如何粘贴,用vim打开那个文件后,该文件不存在,所以vim会自动创建按一下字母”i”然后同时按shift + Insert 进行粘贴(或者单击鼠标邮件即可),前提是已经复制到剪切板中了粘贴好后,然后把光标移动到该行最前面输入ssh-ras ,然后按空格再按ESC,然后输入冒号wq :wq 就保存了格式如下图:





4)再设置putty选项,点窗口左侧的SSh –> Auth ,单击窗口右侧的Browse… 选择刚刚生成的私钥,
再点Open ,此时输入root,就不用输入密码就能登录了





如果在前面你设置了Key Passphrase ,那么此时就会提示你输入密码的为了更加安全建议大家要设置一个Key Passphrase。

下一章  Linux文件与目录管理

Linux文件与目录管理

linux中什么是一个文件的路径呢,说白了就是这个文件存在的地方,例如在