LINUX UNIX 命令 技巧 大全 之 mysql_upgrade
linux系统常用命令

linux系统常用命令
``` ls:列出当前目录下的所有文件及子目录 cd:切换目录 mkdir:创建目录 rm:删除文件或目录 mv:移动文件或重命名文件 cat:显示文件内容 echo:输出字符串man:显示命令手册 find:查找文件 grep:搜索文件中的字符串 sort:对文件中的行排序 tail:显示文件末尾部分 head:显示文件开头部分 more:分屏显示文件内容chmod:改变文件权限 chown:改变文件所有者 ps:显示正在执行的进程 kill:杀死进程 df:查看磁盘使用情况du:显示文件大小 top:显示正在运行的进程 mount:挂载设备 umount:卸载设备 ```。
UNIX系统常用命令

UNIX系统常用命令UNIX系统常用命令格式:command [flags] [argument1] [argument2] ...其中flags以-开始,多个flags可用一个-连起来,如ls -l -a 与ls -la相同。
根据命令的不同,参数分为可选的或必须的;所有的命令从标准输入接受输入,输出结果显示在标准输出,而错误信息则显示在标准错误输出设备。
可使用重定向功能对这些设备进行重定向。
命令在正常执行结果后返回一个0值,如果命令出错可未完全完成,则返回一个非零值(在shell中可用变量$?查看). 在shell script中可用此返回值作为控制逻辑的一部分。
注:不同的UNIX版本的flags可能有所不同。
1、与用户相关的命令1.1 login(在LINUX Redhat下此命令功能与Solaris/BSD不同,执行login会退出当前任务).login:Password:相关文件:在下面的这些文件中设定shell运行时必要的路径,终端类型,其他变量或特殊程序.$HOME/.profile (Bourne shell, sh, bash)$HOME/.cshrc (csh, tcsh)$HOME/.tcshrc (tcsh)/etc/passwd文件中列出每个用户的shell/etc/csh.cshrc/etc/csh.login/etc/profile (Bourne shell, bash)/etc/login (Bourne shell, bash)csh: /etc/csh.cshrc和$HOME/.cshrc每次执行都会读取,而/etc/csh.login和$HOME/.login只有注册shell才执行修改相应文件后使用 source .cshrc使能相关修改,如果修改了path则还需使用rehash刷新可执行文件hash表。
tcsh: $HOME/.tcshrc, 没有些文件读取.cshrcsh: /etc/profile和$HOME/.profile注册shellbash: /etc/profile和$HOME/.bash_profile注册shell读取.bashrc交互式非注册shell才读取。
实用linux命令大全(详细)

linux命令(重新整理)Linux基本操作命令首先介绍一个名词“控制台(console)”,它就是我们通常见到的使用字符操作界面的人机接口,例如dos。
我们说控制台命令,就是指通过字符界面输入的可以操作系统的命令,例如dos命令就是控制台命令。
我们现在要了解的是基于Linux操作系统的基本控制台命令。
有一点一定要注意,和dos命令不同的是,Linux的命令(也包括文件名等等)对大小写是敏感的,也就是说,如果你输入的命令大小写不对的话,系统是不会做出你期望的响应的。
模式切换1、由字符到图型#startx或#init 52、由图形到字符#logout或init 33、注销#logout或exit或ctrl+d4、关机#poweroff或init 0或shutdown now或halt -p5、重启#reboot或init 6或shutdown -r now获得帮助#help提供内部命令的帮助#man或info提供外部命令的帮助。
如果你的英文足够好,那完全可以不靠任何人就精通linux,只要你会用man。
Man实际上就是察看指令用法的help,学习任何一种UNIX类的操作系统最重要的就是学会使用man这个辅助命令。
man是manual(手册)的缩写字,它的说明非常的详细,但是因为它都是英文,看起来非常的头痛。
建议大家需要的时候再去看man,平常吗,记得一些基本用法就可以了。
ls这个命令就相当于dos下的dir命令一样,这也是Linux控制台命令中最为重要几个命令之一。
ls最常用的参数有三个:-a -l -F。
ls -aLinux上的文件以“.”开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了显示一般文件名外,连隐藏文件也会显示出来。
ls -l(这个参数是字母L的小写,不是数字1)这个命令可以使用长格式显示文件内容,如果需要察看更详细的文件资料,就要用到ls -l这个指令。
linux reload用法

linux reload用法
在Linux中,"reload"命令通常用于重新加载或重新启动服务。
具体使用方法取决于你运行什么样的服务以及你使用的发行版。
下面是一些常见的服务和对应的reload命令用法示例:
1. Apache HTTP服务器:
- 重新加载Apache配置:sudo systemctl reload apache2 或
sudo service apache2 reload
2. Nginx服务器:
- 重新加载Nginx配置:sudo systemctl reload nginx 或 sudo service nginx reload
3. MySQL数据库:
- 重新加载MySQL配置:sudo systemctl reload mysql 或 sudo service mysql reload
4. PostgreSQL数据库:
- 重新加载PostgreSQL配置:sudo systemctl reload postgresql 或 sudo service postgresql reload
5. SSH服务器:
- 重新加载SSH配置:sudo systemctl reload ssh 或 sudo service ssh reload
请注意,不同的发行版可能会有些微差异,因此请根据你正在使用的操作系统和服务进行适当调整。
此外,某些服务可能使
用"restart"命令重新启动服务,例如 "sudo systemctl restart apache2" 或 "sudo service apache2 restart"。
MySQL数据库常用命令大全

之五兆芳芳创作一、连接MySQL格局: mysql -h主机地址 -u用户名-p用户密码1、例1:连接到本机上的MYSQL.首先在打开DOS 窗口,然落后入目录mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚装置好MYSQL,超等用户root是没有密码的,故直接回车便可进入到MYSQL中了,MYSQL的提示符是:mysql>.2、例2:连接到远程主机上的MYSQL.假定远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123.则键入以下命令:mysql -h110.110.110.110 -uroot -pabcd123(注:u与root可以不必加空格,其它也一样)3、退出MYSQL命令: exit (回车).二、修改密码格局:mysqladmin -u用户名-p旧密码password 新密码1、例1:给root加个密码ab12.首先在DOS 下进入目录mysqlbin,然后键入以下命令:mysqladmin -uroot -password ab12注:因为开始时root没有密码,所以-p 旧密码一项就可以省略了.2、例2:再将root的密码改成djg345.mysqladmin -uroot -pab12 password djg345三、增加新用户.(注意:和上面不合,下面的因为是MySQL情况中的命令,所以前面都带一个分号作为命令结束符)格局:grant select on 数据库.* to 用户名@登录主机identified by \"密码\"例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、拔出、修改、删除的权限.首先用以root用户连入MySQL,然后键入以下命令:grant select,insert,update,delete on *.* to test2@localhost identified by \"abc\";如果你不想test2有密码,可以再打一个命令将密码消掉.grant select,insert,update,delete on mydb.* to test2@localhost identified by \"\";在上面讲了登录、增加用户、密码更改等问题.下面我们来看看MySQL中有关数据库方面的操纵.注意:你必须首先登录到MySQL中,以下操纵都是在MySQL的提示符下进行的,并且每个命令以分号结束.1、MySQL经常使用命令create database name; 创建数据库use databasename; 选择数据库drop database name 直接删除数据库,不提醒show tables; 显示表describe tablename; 表的详细描述select 中加上distinct去除重复字段mysqladmin drop database name 删除数据库前,有提示.显示当前mysql版本和当前日期select version(),current_date;2、修改mysql中root的密码:shell>mysql -u root -pmysql> update user set password=password(”xueok654123″) where user=’root’;mysql> flush privileges //刷新数据库mysql>use dbname;打开数据库:mysql>show databases; 显示所有数据库mysql>show tables; 显示数据库mysql中所有的表:先use mysql;然后mysql>describe user; 显示表mysql数据库中user表的列信息);3、grant创建一个可以从任何地方连接办事器的一个完全的超等用户,但是必须使用一个口令something做这个mysql> grant all privileges on *.* to user@localhost identified by ’something’ with增加新用户格局:grant select on 数据库.* to 用户名@登录主机identified by “密码”GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY ’something’ WITH GRANT OPTION;GRANT ALL PRIVILEGES ON *.* TO monty@”%” IDENTIFIED BY ’something’ WITH GRANT OPTION;删除授权:mysql> revoke all privileges on *.* from root@”%”;mysql> delete from user where u ser=”root” and host=”%”;mysql> flush privileges;创建一个用户custom在特定客户端登录,可拜访特定数据库fangchandbmysql >grant select, insert, update, delete, create,drop on fangchandb.* to custom@ identified by ‘ passwd’重命名表:mysql > alter table t1 rename t2;4、mysqldump10、操纵数据#拔出表departmentinsert into department(name,description) values('系统部','系统部');insert into department(name,description) values('公关部','公关部');insert into department(name,description) values('客服部','客服部');insert into department(name,description) values('财务部','财务部');insert into department(name,description) values('测试部','测试部');#拔出表s_positioninsert into s_position(name,description) values('总监','总监');insert into s_position(name,description) values('经理','经理');insert into s_position(name,description) values('普通员工','普通员工');#拔出表depart_posinsert into depart_pos(department_id,position_id)select a.id department_id,b.id postion_idfrom department a,s_position b;#拔出表stafferinsert into staffer(name,department_id,position_id) values('陈达治',1,1);insert into staffer(name,department_id,position_id) values('李文宾',1,2);insert into staffer(name,department_id,position_id) values('马佳',1,3);insert into staffer(name,department_id,position_id) values('亢志强',5,1);insert into staffer(name,department_id,position_id) values('杨玉茹',4,1);11、查询及删除操纵#显示系统部的人员和职位select , department_name, position_namefrom staffer a,department b,s_position cwhere a.department_id=b.id and a.position_id=c.id and ='系统部';#显示系统部的人数select count(*) from staffer a,department bwhere a.department_id=b.id and ='系统部'#显示各部分的人数select count(*) cou,from staffera,department bwhere a.department_id=b.idgroup by ;#删除客服部delete from department where name='客服部';#将财务部修改成财务一部update department set name='财务一部' where name='财务部';12、备份和恢复备份数据库stafferc:\mysql\bin\mysqldump -uroot -proot staffer>e:\staffer.sql得到的staffer.sql是一个sql脚本,不包含建库的语句,所以你需要手工创建数据库才可以导入恢单数据库staffer,需要创建一个空库stafferc:\mysql\bin\mysql -uroot -proot staffer<staffer.sql如果不希望后来手工创建staffer,可以c:\mysql\bin\mysqldump -uroot -proot --databases staffer>e:\staffer.sqlmysql -uroot -proot >e:\staffer.sql但这样的话系统种就不克不及存在staffer库,且无法导入其他名字的数据库,当然你可以手工修改staffer.sql文件13、从文本向数据库导入数据1)使用东西c:\mysql\bin\mysqlimport这个东西的作用是将文件导入到和去掉文件扩展名名字相同的内外,如staffer.txt,staffer都是导入到staffer表中经常使用选项及功效如下-d or --delete 新数据导入数据表中之前删除数据数据表中的所有信息-f or --force 不管是否遇到错误,mysqlimport将强制持续拔出数据-i or --ignore mysqlimport 跳过或疏忽那些有相同唯一关头字的行,导入文件中的数据将被疏忽.-l or -lock-tables 数据被拔出之前锁住表,这样就避免了,你在更新数据库时,用户的查询和更新受到影响.-r or -WordStr 这个选项与-i选项的作用相反;此选项将替代表中有相同唯一关头字的记实.--fields-enclosed- by= char指定文本文件中数据的记实时以什么括起的,良多情况下数据以双引号括起. 默认的情况下数据是没有被字符括起的.--fields-terminated- by=char指定各个数据的值之间的分隔符,在句号分隔的文件中,分隔符是句号.您可以用此选项指定数据之间的分隔符.默认的分隔符是跳格符(Tab)--lines-terminated- by=str此选项指定文本文件中行与行之间数据的分隔字符串或字符. 默认的情况下mysqlimport以newline为行分隔符.您可以选择用一个字符串来替代一个单个的字符:一个新行或一个回车.mysqlimport命令经常使用的选项还有-v 显示版本(version),-p 提示输入密码(password)等.这个东西有个问题,无法疏忽某些列,这样对我们的数据导入有很大的麻烦,虽然可以手工设置这个字段,但会出现莫名其妙的结果,我们做一个复杂的示例我们定义如下的depart_no.txt,保管在e盘,距离为制表符\t10 1011 1112 24执行如下命令c:\mysql\bin\mysqlimport -uroot -proot staffer e:\depart_pos.txt在这里没有使用列的包抄符号,联系采取默认的\t,因为采取此外符号会有问题,不知道是不是windows的原因2)Load Data INFILE file_name into table_name(column1_name,column2_name)这个命令在mysql>提示符下使用,优点是可以指定列导入,示例如下c:\mysql\bin\mysql -uroot -proot staffermysql>load data infile "e:/depart_no.txt" into depart_no(department_id,position_id);这两个东西在Windows下使用都有问题,不知道是Windows 的原因仍是中文的问题,并且不指定的列它产生了空值,这显然不是我们想要的,所以谨慎使用这些东西进入MySQL:mysql -uuser -ppassword --port=33071:使用SHOW语句找出在办事器上当前存在什么数据库:mysql> SHOW DATABASES;2:2、创建一个数据库MYSQLDATAmysql> Create DATABASE MYSQLDATA;3:选择你所创建的数据库mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操纵成功!)4:查抄现在的数据库中存在什么表mysql> SHOW TABLES;5:创建一个数据库表mysql> Create TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));6:显示表的结构:mysql> DESCRIBE MYTABLE;7:往表中参加记实mysql> insert into MYTABLE values ("hyq","M");8:用文本方法将数据装入数据库表中(例如D:/mysql.txt)mysql> LOAD DATA LOCAL INFILE "D:/mysql.txt" INTO TABLE MYTABLE;9:导入.sql文件命令(例如D:/mysql.sql)mysql>use database;mysql>source d:/mysql.sql;10:删除表mysql>drop TABLE MYTABLE;11:清空表mysql>delete from MYTABLE;12:更新表中数据mysql>update MYTABLE set sex="f" wherename='hyq';UPDATE [LOW_PRIORITY] [IGNORE] tbl_nameSET col_name1=expr1 [, col_name2=expr2 ...][WHERE where_definition][ORDER BY ...][LIMIT rows]orUPDATE [LOW_PRIORITY] [IGNORE] tbl_name [, tbl_name ...]SET col_name1=expr1 [, col_name2=expr2 ...][WHERE where_definition]UPDATE 以新的值更新现存表中行的列.SET 子句指出要修改哪个列和他们应该给定的值.WHERE子句如果被给出,指定哪个记实行应该被更新.不然,所有的记实行被更新.如果ORDER BY 子句被指定,记实即将被以指定的次序更新.如果你指定关头词 LOW_PRIORITY,UPDATE 的执即将被延迟,直到没有其它的客户端正在读取表.如果你指定关头词IGNORE,该更新语句将不会异常中止,即便在更新进程中出现重复键错误.导致冲突的记实即将不会被更新.如果在一个表达式中从tbl_name 中拜访一个列,UPDATE 使用列的当前值.举例来说,下面的语句设置age 列值为它的当前值加 1 :mysql> UPDATE persondata SET age=age+1;UPDATE 赋值是从左到右计较的.举例来说,下列语句将age 列设置为它的两倍,然后再加 1 :mysql> UPDATE persondata SET age=age*2, age=age+1;如果你设置列为其当前的值,MySQL 注意到这点,其实不更新它.UPDATE 前往实际被改动的记实行数目.在MySQL 3.22 或更新的版本中,C API 函数mysql_info()前往被匹配并更新的记实行数目,以及在UPDATE 期间产生的警告的数目.在MySQL 3.23 中,你可以使用LIMIT # 来确保只有给定的记实行数目被更改.如果一个 ORDER BY 子句被使用(从 MySQL 4.0.0 开始支持),记实即将以指定的次序被更新.这实际上只有连同LIMIT一起才有用.从MySQL 4.0.4 开始,你也可以执行一个包含多个表的UPDATE 的操纵:UPDATE items,month SET items.price=month.priceWHERE items.id=month.id;注意:多表UPDATE 不成以使用ORDER BY 或LIMIT.关头字: mysql启动:net start mySql;进入:mysql -u root -p/mysql -h localhost -u root -p databaseName;列出数据库:show databases;选择数据库:use databaseName;列出表格:show tables;显示表格列的属性:show columns from tableName;成立数据库:source fileName.txt;匹配字符:可以用通配符_代表任何一个字符,%代表任何字符串;增加一个字段:alter table tabelName add column fieldName dateType;增加多个字段:alter table tabelName add column fieldName1 dateType,add columns fieldName2 dateType;多行命令输入:注意不克不及将单词断开;当拔出或更改数据时,不克不及将字段的字符串展开到多行里,不然硬回车将被储存到数据中;增加一个办理员帐户:grant all on *.* touser@localhost identified by "password";每条语句输入完毕后要在末尾填加分号';',或填加'\g'也可以;查询时间:select now();查询当前用户:select user();查询数据库版本:select version();查询当前使用的数据库:select database();1、删除student_course数据库中的students数据表:rm -f student_course/students.*2、备份数据库:(将数据库test备份)mysqldump -u root -p test>c:\test.txt备份表格:(备份test数据库下的mytable 表格)mysqldump -u root -p test mytable>c:\test.txt将备份数据导入到数据库:(导回test数据库)mysql -u root -p test3、创建临时表:(成立临时表zengchao) create temporary table zengchao(name varchar(10));4、创建表是先判断表是否存在create table if not exists students(……);5、从已经有的表中复制表的结构create table table2 select * from table1 where 1<>1;6、复制表create table table2 select * from table1;7、对表重新命名alter table table1 rename as table2;8、修改列的类型alter table table1 modify id int unsigned;//修改列id的类型为int unsigned alter table table1 change id sid int unsigned;//修改列id的名字为sid,并且把属性修改成int unsigned9、创建索引alter table table1 add index ind_id (id);create index ind_id on table1 (id);createunique index ind_id on table1 (id);//成立唯一性索引10、删除索引drop index idx_id on table1;alter table table1 drop index ind_id;11、联合字符或多个列(将列id 与":"和列name和"="连接)select concat(id,':',name,'=') from students;12、limit(选出10到20条)<第一个记实集的编号是0>select * from students order by id limit 9,10;13、MySQL不支持的功效事务,视图,外键和引用完整性,存储进程和触发器14、MySQL会使用索引的操纵符号<,<=,>=,>,=,between,in,不带%或_开头的like 15、使用索引的缺点1)减慢增删改数据的速度;2)占用磁盘空间;3)增加查询优化器的承担;当查询优化器生成执行筹划时,会考虑索引,太多的索引会给查询优化器增加任务量,导致无法选择最优的查询筹划;16、阐发索引效率办法:在一般的SQL语句前加上explain;阐发结果的寄义:1)table:表名;2)type:连接的类型,(ALL/Range/Ref).其中ref 是最理想的;3)possible_keys:查询可以利用的索引名;4)key:实际使用的索引;5)key_len:索引中被使用部分的长度(字节);6)ref:显示列名字或"const"(不明白什么意思);7)rows:显示MySQL 认为在找到正确结果之前必须扫描的行数;8)extra:MySQL的建议;17、使用较短的定长列1)尽可能使用较短的数据类型;2)尽可能使用定长数据类型;a)用char代替varchar,固定长度的数据处理比变长的快些;b)对于频繁修改的表,磁盘容易形成碎片,从而影响数据库的整体性能;c)万一出现数据表解体,使用固定长度数据行的表更容易重新机关.使用固定长度的数据行,每个记实的开始位置都是固定记实长度的倍数,可以很容易被检测到,但是使用可变长度的数据行就不一定了;d)对于MyISAM类型的数据表,虽然转换成固定长度的数据列可以提高性能,但是占据的空间也大;18、使用not null和enum尽量将列定义为not null,这样可使数据的出来更快,所需的空间更少,并且在查询时,MySQL不需要查抄是否存在特例,即null值,从而优化查询;如果一列只含有有限数目的特定值,如性别,是否有效或入学年份等,在这种情况下应该考虑将其转换为enum列的值,MySQL处理的更快,因为所有的enum值在系统内都是以标识数值来暗示的;19、使用optimize table对于经常修改的表,容易产生碎片,使在查询数据库时必须读取更多的磁盘块,下降查询性能.具有可变长的表都存在磁盘碎片问题,这个问题对blob数据类型更加突出,因为其尺寸变更很是大.可以通过使用optimize table来整理碎片,包管数据库性能不下降,优化那些受碎片影响的数据表. optimize table可以用于MyISAM和BDB类型的数据表.实际上任何碎片整理办法都是用mysqldump来转存数据表,然后使用转存后的文件偏重新建数据表;20、使用procedure analyse()可以使用procedure analyse()显示最佳类型的建议,使用很复杂,在select语句前面加上procedure analyse()就可以了;例如:select * from students procedure analyse();select * from students procedure analyse(16,256);第二条语句要求procedure analyse()不要建议含有多于16个值,或含有多于256字节的enum类型,如果没有限制,输出可能会很长;21、使用查询缓存1)查询缓存的任务方法:第一次执行某条select语句时,办事器记住该查询的文本内容和查询结果,存储在缓存中,下次碰到这个语句时,直接从缓存中前往结果;当更新数据表后,该数据表的任何缓存查询都酿成无效的,并且会被丢弃.2)配置缓存参数:变量:query_cache _type,查询缓存的操纵模式.有3中模式,0:不缓存;1:缓存查询,除非与select sql_no_cache 开头;2:按照需要只缓存那些以select sql_cache开头的查询;query_cache_size:设置查询缓存的最大结果集的大小,比这个值大的不会被缓存.22、调整硬件1)在机械上装更多的内存;2)增加更快的硬盘以削减I/O 等待时间;寻道时间是决定性能的主要因素,逐字地移动磁头是最慢的,一旦磁头定位,从磁道读则很快;3)在不合的物理硬盘设备上重新分派磁盘勾当;如果可能,应将最忙碌的数据库存放在不合的物理设备上,这跟使用同一物理设备的不合分区是不合的,因为它们将争用相同的物理资源(磁头).。
Linux与Unixshell编程指南(完整高清版).pdf

Linux与Unixshell编程指南(完整⾼清版).pdf找到⼀本很详细的Linux Shell脚本教程,其实⾥⾯不光讲了Shell脚本编程,还介绍了系统的各种命令本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的⽂字处理以及少量的系统管理问题。
本书内容全⾯、⽂字简洁流畅,适合Shell编程⼈员学习、参考。
⽬录译者序前⾔第⼀部分 shell第1章⽂件安全与权限 11.1 ⽂件 11.2 ⽂件类型 21.3 权限 21.4 改变权限位 41.4.1 符号模式 41.4.2 chmod命令举例 51.4.3 绝对模式 51.4.4 chmod命令的其他例⼦ 61.4.5 可以选择使⽤符号模式或绝对模式 71.5 ⽬录 71.6 suid/guid 71.6.1 为什么要使⽤suid/guid 81.6.2 设置suid/guid的例⼦ 81.7 chown和chgrp 91.7.1 chown举例 91.7.2 chgrp举例 91.7.3 找出你所属于的⽤户组 91.7.4 找出其他⽤户所属于的组 101.8 umask 101.8.1 如何计算umask值 101.8.2 常⽤的umask值 111.9 符号链接 121.9.1 使⽤软链接来保存⽂件的多个映像 121.9.2 符号链接举例 121.10 ⼩结 13第2章使⽤find和xargs 142.1 find命令选项 142.1.1 使⽤name选项 152.1.2 使⽤perm选项 162.1.3 忽略某个⽬录 162.1.4 使⽤user和nouser选项 162.1.5 使⽤group和nogroup选项 162.1.6 按照更改时间查找⽂件 172.1.7 查找⽐某个⽂件新或旧的⽂件 172.1.8 使⽤type选项 172.1.9 使⽤size选项 182.1.10 使⽤depth选项 182.1.11 使⽤mount选项 182.1.12 使⽤cpio选项 182.1.13 使⽤exec或ok来执⾏shell命令 192.1.14 find命令的例⼦ 202.2 xargs 202.3 ⼩结 21第3章后台执⾏命令 223.1 cron和crontab 223.1.1 crontab的域 223.1.2 crontab条⽬举例 233.1.3 crontab命令选项 233.1.4 创建⼀个新的crontab⽂件 243.1.5 列出crontab⽂件 243.1.6 编辑crontab⽂件 243.1.7 删除crontab⽂件 253.1.8 恢复丢失的crontab⽂件 253.2 at命令 253.2.2 列出所提交的作业 273.2.3 清除⼀个作业 273.3 &命令 273.3.1 向后台提交命令 283.3.2 ⽤ps命令查看进程 283.3.3 杀死后台进程 283.4 nohup命令 293.4.1 使⽤nohup命令提交作业 293.4.2 ⼀次提交⼏个作业 293.5 ⼩结 30第4章⽂件名置换 314.1 使⽤* 314.2 使⽤? 324.3 使⽤[...]和[!...] 324.4 ⼩结 33第5章 shell输⼊与输出 345.1 echo 345.2 read 355.3 cat 375.4 管道 385.5 tee 395.6 标准输⼊、输出和错误 405.6.1 标准输⼊ 405.6.2 标准输出 405.6.3 标准错误 405.7 ⽂件重定向 405.7.1 重定向标准输出 415.7.2 重定向标准输⼊ 425.7.3 重定向标准错误 425.8 结合使⽤标准输出和标准错误 43 5.9 合并标准输出和标准错误 435.10 exec 445.11 使⽤⽂件描述符 445.12 ⼩结 45第6章命令执⾏顺序 466.1 使⽤&& 466.2 使⽤|| 466.3 ⽤()和{ }将命令结合在⼀起 47 6.4 ⼩结 48第⼆部分⽂本过滤第7章正则表达式介绍 497.1 使⽤句点匹配单字符 507.2 在⾏⾸以^匹配字符串或字符序列 50 7.3 在⾏尾以$匹配字符串或字符 517.4 使⽤*匹配字符串中的单字符或其重复序列 517.5 使⽤\屏蔽⼀个特殊字符的含义 52 7.6 使⽤[]匹配⼀个范围或集合 527.7 使⽤\{\}匹配模式结果出现的次数 53 7.8 ⼩结 55第8章 grep家族 568.1 grep 578.1.1 双引号引⽤ 578.1.2 grep选项 578.1.3 查询多个⽂件 578.1.4 ⾏匹配 578.1.5 ⾏数 588.1.6 显⽰⾮匹配⾏ 588.1.7 精确匹配 588.1.8 ⼤⼩写敏感 588.2 grep和正则表达式 588.2.1 模式范围 598.2.2 不匹配⾏⾸ 598.2.3 设置⼤⼩写 598.2.4 匹配任意字符 598.2.5 ⽇期查询 598.2.6 范围组合 608.2.8 使⽤grep匹配“与”或者“或”模式 61 8.2.9 空⾏ 618.2.10 匹配特殊字符 618.2.11 查询格式化⽂件名 618.2.12 查询IP地址 618.3 类名 628.4 系统grep命令 628.4.1 ⽬录 638.4.2 passwd⽂件 638.4.3 使⽤ps命令 638.4.4 对⼀个字符串使⽤grep 648.5 egrep 648.6 ⼩结 65第9章 AWK介绍 669.1 调⽤awk 669.2 awk脚本 679.2.1 模式和动作 679.2.2 域和记录 679.2.3 awk中正则表达式及其操作 709.2.4 元字符 709.2.5 条件操作符 709.2.6 awk内置变量 739.2.7 NF、NR和FILENAME 749.2.8 awk操作符 759.2.9 内置的字符串函数 789.2.10 字符串屏蔽序列 809.2.11 awk输出函数printf 819.2.12 printf修饰符 819.2.13 awk数组 869.3 ⼩结 88第10章 sed ⽤法介绍 8910.1 sed怎样读取数据 8910.2 调⽤sed 8910.2.1 保存sed输出 9010.2.2 使⽤sed在⽂件中查询⽂本的⽅式 90 10.2.3 基本sed编辑命令 9010.3 sed和正则表达式 9110.4 基本sed编程举例 9110.4.1 使⽤p(rint)显⽰⾏ 9110.4.2 打印范围 9110.4.3 打印模式 9210.4.4 使⽤模式和⾏号进⾏查询 9210.4.5 匹配元字符 9210.4.6 显⽰整个⽂件 9210.4.7 任意字符 9210.4.8 ⾸⾏ 9210.4.9 最后⼀⾏ 9310.4.10 打印⾏号 9310.4.11 附加⽂本 9310.4.12 创建sed脚本⽂件 9410.4.13 插⼊⽂本 9410.4.14 修改⽂本 9510.4.15 删除⽂本 9610.4.16 替换⽂本 9610.5 使⽤替换修改字符串 9710.6 将sed结果写⼊⽂件命令 9710.7 从⽂件中读⽂本 9810.8 匹配后退出 9810.9 显⽰⽂件中的控制字符 9910.10 使⽤系统sed 9910.10.1 处理控制字符 9910.10.2 处理报⽂输出 10110.10.3 去除⾏⾸数字 10110.10.4 附加⽂本 10210.10.5 从shell向sed传值 10210.10.6 从sed输出中设置shell变量 102 10.11 快速⼀⾏命令 102第11章合并与分割 10411.1 sort⽤法 10411.1.1 概述 10411.1.2 sort选项 10411.1.3 保存输出 10511.1.4 sort启动⽅式 10511.1.5 sort对域的参照⽅式 10511.1.6 ⽂件是否已分类 10511.1.7 基本sort 10611.1.8 sort分类求逆 10611.1.9 按指定域分类 10611.1.10 数值域分类 10611.1.11 唯⼀性分类 10711.1.12 使⽤k的其他sort⽅法 10811.1.13 使⽤k做分类键排序 10811.1.14 指定sort序列 10811.1.15 pos⽤法 10811.1.16 使⽤head和tail将输出分类 109 11.1.17 awk使⽤sort输出结果 10911.1.18 将两个分类⽂件合并 11011.2 系统sort 11011.3 uniq⽤法 11111.4 join⽤法 11211.5 cut⽤法 11411.5.1 使⽤域分隔符 11511.5.2 剪切指定域 11511.6 paste⽤法 11611.6.1 指定列 11611.6.2 使⽤不同的域分隔符 11611.6.3 paste命令管道输⼊ 11711.7 split⽤法 11711.8 ⼩结 118第12章 tr⽤法 11912.1 关于tr 11912.1.1 字符范围 11912.1.2 保存输出 12012.1.3 去除重复出现的字符 12012.1.4 删除空⾏ 12012.1.5 ⼤写到⼩写 12112.1.6 ⼩写到⼤写 12112.1.7 删除指定字符 12112.1.8 转换控制字符 12212.1.9 快速转换 12212.1.10 匹配多于⼀个字符 12312.2 ⼩结 123第三部分登录环境第13章登录环境 12513.1 /etc/profile 12513.2 ⽤户的$HOME.profile 12813.3 stty⽤法 12913.4 创建.logout⽂件 13113.5 ⼩结 131第14章环境和shell变量 13214.1 什么是shell变量 13214.2 本地变量 13214.2.1 显⽰变量 13314.2.2 清除变量 13314.2.3 显⽰所有本地shell变量 133 14.2.4 结合变量值 13414.2.5 测试变量是否已经设置 13414.2.6 使⽤变量来保存系统命令参数 135 14.2.7 设置只读变量 13514.3 环境变量 13614.3.1 设置环境变量 13614.3.2 显⽰环境变量 13614.3.3 清除环境变量 13714.3.4 嵌⼊shell变量 13714.3.6 set命令 14014.3.7 将变量导出到⼦进程 140 14.4 位置变量参数 14114.4.1 在脚本中使⽤位置参数 142 14.4.2 向系统命令传递参数 142 14.4.3 特定变量参数 14314.4.4 最后的退出状态 14414.5 ⼩结 145第15章引号 14615.1 引⽤必要性 14615.2 双引号 14615.3 单引号 14715.4 反引号 14715.5 反斜线 14815.6 ⼩结 149第四部分基础shell编程第16章 shell脚本介绍 15116.1 使⽤shell脚本的原因 15116.2 脚本内容 15116.3 运⾏⼀段脚本 15216.4 ⼩结 153第17章条件测试 15417.1 测试⽂件状态 15417.2 测试时使⽤逻辑操作符 155 17.3 字符串测试 15517.4 测试数值 15617.5 expr⽤法 15717.5.1 增量计数 15817.5.2 数值测试 15817.5.3 模式匹配 15817.6 ⼩结 159第18章控制流结构 16018.1 退出状态 16018.2 控制结构 16018.2.1 流控制 16118.2.2 循环 16118.3 if then else语句 16118.3.1 简单的if语句 16218.3.2 变量值测试 16218.3.3 grep输出检查 16318.3.4 ⽤变量测试grep输出 163 18.3.5 ⽂件拷贝输出检查 16418.3.6 当前⽬录测试 16418.3.7 ⽂件权限测试 16518.3.8 测试传递到脚本中的参数 165 18.3.9 决定脚本是否为交互模式 165 18.3.10 简单的if else语句 16618.3.11 变量设置测试 16618.3.12 检测运⾏脚本的⽤户 166 18.3.13 将脚本参数传⼊系统命令 167 18.3.14 null:命令⽤法 16718.3.15 测试⽬录创建结果 16818.3.16 另⼀个拷贝实例 16918.3.17 多个if语句 16918.3.18 测试和设置环境变量 169 18.3.19 检测最后命令状态 17018.3.20 增加和检测整数值 17118.3.21 简单的安全登录脚本 172 18.3.22 elif⽤法 17318.3.23 使⽤elif进⾏多条件检测 173 18.3.24 多⽂件位置检测 17418.4 case语句 17518.4.1 简单的case语句 17518.4.2 对匹配模式使⽤| 17618.4.3 提⽰键⼊y或n 17718.4.4 case与命令参数传递 177 18.4.5 捕获输⼊并执⾏空命令 17818.5 for循环 18018.5.1 简单的for循环 18118.5.2 打印字符串列表 18118.5.3 对for循环使⽤ls命令 18118.5.4 对for循环使⽤参数 18218.5.5 使⽤for循环连接服务器 18318.5.6 使⽤for循环备份⽂件 18318.5.7 多⽂件转换 18318.5.8 多sed删除操作 18418.5.9 循环计数 18418.5.10 for循环和本地⽂档 18418.5.11 for循环嵌⼊ 18518.6 until循环 18618.6.1 简单的until循环 18618.6.2 监视⽂件 18718.6.3 监视磁盘空间 18718.7 while循环 18818.7.1 简单的while循环 18818.7.2 使⽤while循环读键盘输⼊ 188 18.7.3 ⽤while循环从⽂件中读取数据 189 18.7.4 使⽤IFS读⽂件 18918.7.5 带有测试条件的⽂件处理 190 18.7.6 扫描⽂件⾏来进⾏数⽬统计 191 18.7.7 每次读⼀对记录 19318.7.8 忽略#字符 19318.7.9 处理格式化报表 19418.7.10 while循环和⽂件描述符 196 18.8 使⽤break和continue控制循环 197 18.8.1 break 19718.8.2 跳出case语句 19718.8.3 continue 19718.8.4 浏览⽂件⾏ 19818.9 菜单 19918.10 ⼩结 201第19章 shell函数 20219.1 在脚本中定义函数 20319.2 在脚本中使⽤函数 20319.3 向函数传递参数 20319.4 从调⽤函数中返回 20319.5 函数返回值测试 20419.6 在shell中使⽤函数 20419.7 创建函数⽂件 20419.8 定位⽂件 20519.9 检查载⼊函数 20519.10 执⾏shell函数 20519.10.1 删除shell函数 20619.10.2 编辑shell函数 20619.10.3 函数举例 20719.10.4 将函数集中在⼀起 21919.11 函数调⽤ 21919.11.1 在脚本中调⽤函数 21919.11.2 从函数⽂件中调⽤函数 220 19.12 定位⽂件不只⽤于函数 22219.13 ⼩结 223第20章向脚本传递参数 22420.1 shift命令 22520.1.1 shift命令简单⽤法 22520.1.2 命令⾏输⼊的最后⼀个参数 225 20.1.3 使⽤shift处理⽂件转换 22620.2 getopts 22920.2.1 getopts脚本实例 22920.2.2 getopts使⽤⽅式 23120.2.3 使⽤getopts指定变量取值 231 20.2.4 访问取值⽅式 23220.2.5 使⽤getopts处理⽂件转换 233 20.3 ⼩结 235第21章创建屏幕输出 23621.1.1 字符串输出 23621.1.2 数字输出 23721.1.3 布尔输出 23721.2 tput⽤法 23721.2.1 设置tput命令 23721.2.2 使⽤布尔输出 23721.2.3 在脚本中使⽤tput 23721.2.4 产⽣转义序列 23821.2.5 光标位置 23921.2.6 在屏幕中⼼位置显⽰⽂本 240 21.2.7 查找终端属性 24021.2.8 在脚本中使⽤功能键 24121.2.9 使⽤颜⾊ 24221.2.10 产⽣颜⾊ 24321.2.11 创建精致菜单 24621.3 ⼩结 251第22章创建屏幕输⼊ 25222.1 增加记录 25222.2 删除记录 26222.3 修改记录 26622.4 查看记录 27022.5 ⼩结 273第23章调试脚本 27423.1 ⼀般错误 27423.1.1 循环错误 27423.1.2 典型的漏写引号 27423.1.3 测试错误 27423.1.4 字符⼤⼩写 27523.1.5 for循环 27523.1.6 echo 27523.2 set命令 27523.3 ⼩结 276第24章 shell嵌⼊命令 27724.1 shell嵌⼊命令完整列表 277 24.1.1 pwd 27724.1.2 set 27824.1.3 times 27824.1.4 type 27824.1.5 ulimit 27924.1.6 wait 27924.2 ⼩结 279第五部分⾼级shell编程技巧第25章深⼊讨论<< 28125.1 快速创建⼀个⽂件 28125.2 快速创建打印⽂档 28125.3 ⾃动选择菜单 28225.4 ⾃动ftp传输 28325.5 访问数据库 28625.6 ⼩结 288第26章 shell ⼯具 28926.1 创建保存信息的⽂件 28926.1.1 使⽤date命令创建⽇志⽂件 289 26.1.2 创建唯⼀的临时⽂件 29026.2 信号 29126.2.1 杀死⼀个进程 29226.2.2 检测信号 29326.3 trap 29426.3.1 捕获信号并采取相应的⾏动 294 26.3.2 捕获信号并采取⾏动的另⼀个例⼦ 29526.3.3 锁住终端 29726.3.4 忽略信号 29826.4 eval 30026.4.1 执⾏含有字符串的命令 300 26.4.2 给每个值⼀个变量名 30126.5 logger命令 30226.5.1 使⽤logger命令 30326.6 ⼩结 305第27章⼏个脚本例⼦ 30627.1 pingall 30627.2 backup_gen 30627.3 del.lines 31227.4 access.deny 31327.5 logroll 31627.6 nfsdown 31727.7 ⼩结 317第28章运⾏级别脚本 31828.1 怎么知道系统中是否含有运⾏级别⽬录 31828.2 确定当前的运⾏级别 31928.3 快速熟悉inittab 31928.4 运⾏级别 32028.4.1 各种运⾏级别 32128.4.2 运⾏级别脚本的格式 321 28.4.3 安装运⾏级别脚本 32228.5 使⽤inittab来启动应⽤程序 323 28.6 启动和停⽌服务的其他⽅法 324 28.7 ⼩结 324第29章 cgi脚本 32529.1 什么是Web页⾯? 32529.2 cgi 32529.3 连接Web服务器 32629.4 cgi和HTM脚本 32629.4.1 基本cgi脚本 32629.4.2 显⽰shell命令输出 32829.4.3 使⽤SSI 33029.4.4 访问计数器 33029.4.5 使⽤⼀个链接来显⽰当前Web 环境变量 33229.4.6 其他常⽤的环境变量 334 29.5 get和post⽅法简介 33529.5.1 get⽅法 33529.5.2 post⽅法 34029.5.3 填充列表项 34729.5.4 ⾃动刷新页⾯ 34829.6 ⼩结 349附录常⽤shell命令 350。
luninx常用指令
luninx常用指令
"Lunix常用指令"
在Lunix系统中,有许多常用的命令可以帮助用户进行文件管理、系统操作和网络连接等。
以下是一些常用的Lunix命令:
1. ls,列出当前目录下的文件和文件夹。
2. cd,切换当前目录。
3. pwd,显示当前工作目录的路径。
4. mkdir,创建新的目录。
5. rm,删除文件或目录。
6. cp,复制文件或目录。
7. mv,移动文件或目录。
8. cat,查看文件内容。
9. grep,在文件中查找指定的字符串。
10. chmod,修改文件或目录的权限。
11. chown,修改文件或目录的所有者。
12. ps,显示当前运行的进程。
13. top,显示系统资源占用情况。
14. ifconfig,查看网络接口的配置信息。
15. ping,测试网络连接。
这些命令是Lunix系统中最常用的一些命令,掌握它们可以帮助用户更高效地管理文件和系统,以及进行网络连接和调试。
希望这些命令对你有所帮助!。
UNIX常用命令
UNIX常⽤命令UNIX 常⽤命令50個最常⽤的Unix/Linux命令tar grep find ssh sedawk vim diff sort exportargs ls pwd cd gzipbzip2 unzip shutdown ftp crontabservice ps free top dfkill rm cp mv catmount chmod chown passwd mkdirifconfig uname whereis whatis locateman tail less su mysqlyum rpm ping date wget⽂件和⽬錄:這些命令允許你創建的⽬錄和處理⽂件。
命令描述cat 顯⽰⽂件內容cd 改變當前⽬錄chgrp 改變⽂件或⽬錄之群組擁有權chmod 改變⽂件或⽬錄屬性cp 拷⾙檔案file 顯⽰檔案型態find 找尋檔案grep 在本⽂檔中找尋字串head 顯⽰⽂件的前幾⾏ln 連結檔案或⽬錄ls 將某⼀個⽬錄的內容顯⽰出來mkdir 創建⽬錄more 以分⾴形式顯⽰數據mv 搬移或重新命名檔案od 以⼋進位查看檔案內容pwd 顯⽰現在⼯作⽬錄的路徑rm 刪除⽂件或⽬錄rmdir 刪除⼦⽬錄,⽬錄內須無檔案tail 顯⽰⽂件的最後幾⾏touch 改變⽂件或⽬錄之最後修改時間操作数据:可以⽐較改變⽂件的內容,並⽤下⾯的命令。
命令描述awk 模式和扫描处理语⾔cmp ⽐較兩個⽂件的內容comm ⽐較排序數據cut 挑出檔案的部份欄資料diff ⽐較⽂件或⽬錄之內容dircmp 對⼆個⽬錄下的檔案進⾏⽐較expand Expand tabs to spacesjoin 結合兩個有共同的連結欄位的檔案perl 數據操作語⾔sed Stream text editorsort 排序檔案內容split 將⽂件拆分為較⼩的⽂件csplit 將⼀個⼤的檔案分割成若⼲個較⼩的檔tar 將檔案以保存檔⽅式從磁帶或磁碟中取出或存放tr 字元轉換的處理uniq 去除檔案相同的⾏(須相鄰)wc 計算檔案的⾏數、字數及字元數vi 開啟 vi ⽂件編輯器vim Opens vim text editorfmt Simple text formatterspell Check text for spelling errorispell Check text for spelling errorispell Check text for spelling erroremacs GNU project Emacsex, edit Line editoremacs GNU project Emacsemacs GNU project Emacs压缩⽂件:⽂件可能被壓縮以節省空間。
MYSQL控制台命令
mysql控制台部分命令关键字: 数据库mysql控制台部分命令1,启动和关闭数据库>net start mysql>net stop mysql所以命令必须是一行的第一个,并且以分号结尾:All text commands must be first on line and end with ";"2,根据用户名密码,登录数据库>mysql -uroot -p;如果数据库没有密码则使用>mysql -uroot;3,查看在当前服务器中有多少个数据库>show databases;4,删除某个数据库>drop database databaseName;>commit;5,创建数据库>create database databaseName;6,选择使用某个数据库>use databaseName;7,查看数据库中有多少的表>show tables;8,创建表>create table tableName(id bigint ...name varchar(20)......);9,显示表结构>describe tableName;10,向表中加入数据并查看>insert into tableName(id,name...) values('1','admin',...);>select * from tableName;11,导入.sql文件(文件所在路径是F:\file.sql>source F:/file.sql;12,删除表>drop table tableName;13,删除表中的所有数据,但是表结构依然存在>delete from tableName;14,更新表中的数据,如果没有where,则将影响所有的记录>update tableName set name='administrator' where id='1';15,查看服务器版本和当前日期>select version(),current_date;>select version();>select now();16,把mysql作为一个简单的计算器>select pi();>select pi()*10;17,查看用户>select user();18,使用load>load data local infile filePath into table tableName;一、连接MYSQL。
LinuxUnix简单快捷键整理
LinuxUnix简单快捷键整理Linux/Unix 简单快捷键汇总整理Ctrl + a 切换到命令行开始这个操作跟Home实现的结果一样的,但Home在某些unix环境下无法使用,便可以使用这个组合;在Linux下的vim,这个也是有效的;另外,在windows的许多文件编辑器里,这个也是有效的。
Ctrl + e 切换到命令行末尾这个操作跟END实现的结果一样的,但End键在某些unix环境下无法使用,便可以使用这个组合;在Linux下的vim,这个也是有效的;另外,在windows的许多文件编辑器里,这个也是有效的。
Ctrl + l 清除屏幕内容,效果等同于clearCtrl + u 清除剪切光标之前的内容这个命令很有用,在nslookup里也是有效的。
我有时看见同事一个字一个字的删除shell命令,十分崩溃!其实完全可以用一个Ctrl + u搞定。
Ctrl + k 剪切清除光标之后的内容Ctrl + y 粘贴刚才所删除的字符此命令比较强悍,删除的字符有可能是几个字符串,但极有可能是一行命令。
Ctrl + r 在历史命令中查找(这个非常好用,输入关键字就调出以前的命令了)这个命令我强烈推荐,有时history比较多时,想找一个比较复杂的,直接在这里,shell会自动查找并调用,方便极了Ctrl + c 终止命令Ctrl + d 退出shell,logoutCtrl + z 转入后台运行不过,由Ctrl + z转入后台运行的进程在当前用户退出后就会终止,所以用这个不如用nohup命令&,因为nohup命令的作用就是用户退出之后进程仍然继续运行,而现在许多脚本和命令都要求在root退出时仍然有效。
下面再被充下大家不是太熟悉,我用得比较多的`操作方式:!! 重复执行最后一条命令history 显示你所有执行过的编号+历史命令。
这个可以配合!编辑来执行某某命令↑(Ctrl+p) 显示上一条命令(Ctrl+n) 显示下一条命令!$ 显示系统最近的一条参数最后这个比较有用,比如我先用cat /etc/sysconfig/network-scripts/ifconfig-eth0,然后我想用vim编辑。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MYSQL_UPGRADE(1) MySQLDatabase SystemMYSQL_UPGRADE(1)NAMEmysql_upgrade − check tables for MySQL upgrade
SYNOPSISmysql_upgrade [options]
DESCRIPTIONmysql_upgradeexamines all tables in all databases for incompatibilities with the current version ofMySQL Server.mysql_upgradealso upgrades the system tables so that you can takeadvantage of newprivileges or capabilities that might have been added.
mysql_upgradeshould be executed each time you upgrade MySQL. It supersedes the oldermysql_fix_privilege_tablesscript, which should no longer be used.
If a table is found to have a possible incompatibility,mysql_upgradeperforms a table check. If anyproblems are found, a table repair is attempted. If the table cannot be repaired, see Section 2.4.4,“Rebuilding or Repairing Tables or Indexes” for manual table repair strategies.NoteOn Windows Server 2008 and Windows Vista, you must runmysql_upgradewith administratorprivileges. You can do this by running a Command Prompt as Administrator and running thecommand. Failure to do so may result in the upgrade failing to execute correctly.
CautionYoushould always back up your current MySQL installationbeforeperforming an upgrade. SeeSection 6.2, “Database Backup Methods”.
Some upgrade incompatibilities may require special handling before you upgrade your MySQLinstallation and runmysql_upgrade.See Section 2.4.1, “Upgrading MySQL”, for instructions ondetermining whether anysuch incompatibilities apply to your installation and howtohandle them.
To usemysql_upgrade,makesure that the server is running, and then invoke itlikethis:shell>mysql_upgrade [options]After runningmysql_upgrade,stop the server and restart it so that anychanges made to the system tablestakeeffect.
mysql_upgradeexecutes the following commands to check and repair tables and to upgrade the systemtables:
mysqlcheck −−all−databases −−check−upgrade −−auto−repairmysql mysqlcheck −−all−databases −−check−upgrade −−fix−db−names −−fix−table−names
Notes about the preceding commands:•Becausemysql_upgradeinvokesmysqlcheckwith the−−all−databasesoption, it processes alltables in all databases, which might takealong time to complete. Each table is locked and thereforeunavailable to other sessions while it is being processed. Check and repair operations can betime−consuming, particularly for large tables.
•For details about what checks the−−check−upgradeoption entails, see the description of the FORUPGRADE option of the CHECK TABLE statement (see Section 12.5.2.3, “CHECK TABLESyntax”).
•fix_priv_tablesrepresents a script generated internally bymysql_upgradethat contains SQLstatements to upgrade the tables in the mysql database.
•Prior to MySQL 5.1.31,mysql_upgradedoes not run the secondmysqlcheckcommand, which isnecessary to re−encode database or table names that contain nonalphanumeric characters. (Theystill appear after the upgrade with the #mysql50# prefix described in Section 8.2.3, “Mapping ofIdentifiers to File Names”.) If you have such database or table names, execute the second
MySQL 5.103/01/2010 1MYSQL_UPGRADE(1) MySQLDatabase SystemMYSQL_UPGRADE(1)mysqlcheckcommand manually after executingmysql_upgrade.All checked and repaired tables are marked with the current MySQL version number. This ensures that nexttime you runmysql_upgradewith the same version of the server,itcan tell whether there is anyneed tocheck or repair the table again.
mysql_upgradealso savesthe MySQL version number in a file named mysql_upgrade_info in the datadirectory. This is used to quickly check whether all tables have been checked for this release so thattable−checking can be skipped. Toignore this file and perform the check regardless, use the−−forceoption.
If you install MySQL from RPM packages on Linux, you must install the server and client RPMs.mysql_upgradeis included in the server RPM but requires the client RPM because the latter includesmysqlcheck.(See Section 2.6.1, “Installing MySQL from RPM Packages on Linux”.)
In MySQL 5.1.7,mysql_upgradewasadded as a shell script and worked only for Unix systems. As ofMySQL 5.1.10,mysql_upgradeis an executable binary and is available on all systems.
mysql_upgradesupports the following options, which can be specified on the command line or in the[mysql_upgrade] and [client] option file groups. Other options are passed tomysqlcheck.For example, itmight be necessary to specify the−−password[=password]option.mysql_upgradealso supports theoptions for processing option files described at Section 4.2.3.3.1, “Command-Line Options that AffectOption-File Handling”.