MySQL常用命令大全

登录MySQL方法

单实例MySQL登录的方法

  1.  mysql    #刚装完系统无密码情况登录方式,不需要密码
  2.  mysql -u root  #刚装完系统无密码的情况登录
  3.  mysql -uroot -p   #这里标准的dba命令行登录
  4.  mysql -uroot -poldboy  #非脚本里一般不这样用,密码明文会泄露密码

适合多实例防止密码泄露的方法

设置变量
  1. HISTCONTROL=ignorespace
  2.   mysql -uroot -poldboy -S /data/3306/mysql.sock
  3. 前面加空格将不记录登录信息

2、给启动脚本以及备份脚本等加700权限,用户和组改为root

  1. chmod 700 /data/3306/mysql
  2. chmod 700 /server/scripts/bak.sh

3、删除命令行记录

  1. history -d 历史命令序号
  2. history -c 清除所有
  3. 清除之后在root家目录里面还会有记录
  4. cat ~/.bash.history

多实例MySQL本地登录

  1. mysql -uroot --S /data/3306/mysql.sock
  2. mysql -uroot -p -S /data/3307/mysql.sock
  3. 提示: 多实例通过mysql的-命令指定不同的sock文件登录不同的服务中

注意:多实例的远程连接无需自定sock路径:

  1. mysql -uroot -p -h 127.0.0.1 -P3307
  2. -h 指定IP地址,-P 指定端口号

登录后默认提示符是:mysql > 这个提示符可以更改,就像linux命令行提示符一样

mysql
>

为了防止误操作,可以把提示符标记为测试环境,也可以写入配置永久生效

1) 在命令行修改登录提示

  1. mysql> prompt \u@oldboy \r:\m:\s->
  2. PROMPT set to '\u@oldboy \r:\m:\s->'
  3. root@oldboy 05:03:09->
  4. root@oldboy 05:03:11->
  5. root@oldboy 05:03:12->

2) 配置文件修改登录提示符

my.cnf配置中【mysql】模块下添加如下内容(注意,不是【mysqld】)保存后,无需重启mysql,退出当前session,重新登录即可

  1. [mysql]
  2. prompt=\\u@oldboy \\r:\\m:\\s->
  3.  
  4. MySQL help帮助
  5. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  6. mysql> SHOW DATABASES LIKE '%MY%';  模糊匹配
  7. mysql> show databases like 'd3306';
  8. mysql> show databases like '%3306';
  9. mysql> show databases like '%33%';
  10. 更多参数help show

 

强制关闭数据库的方法(慎用)

  1. killall mysqld
  2. pkill mysqld
  3. killall -9 mysqld
  4. mysqld: no process killed
  5. kill -9 pid

最好使用优雅停止

  1. mysqladmin -uroot -poldboy123 shutdown

野蛮粗鲁杀死数据库导致故障企业案例:

  1. http://oldboy.blog.51cto.com/2561410/1431161
  2. http://oldboy.blog.51cto.com/2561410/1431172

企业实战题7

开发mysql多实例启动脚本:

已知mysql多实例启动命令为:mysqld_safe–defaults-file=/data/3306/my.cnf
&

停止命令为:mysqladmin
-u root -poldboy123 -S /data/3306/mysql.sockshutdown

请完成mysql多实例启动启动脚本的编写

要求:用函数,case语句、if语句等实现。

 

MySQL数据库安全策略介绍

  1. root设置比较复杂的密码
  2. 删除无用的mysql库内的用户账号,只留root@localhost
  3. 删除默认的test数据库
  4. 删除用户的时候,授权的权限尽量最小,允许访问的主机范围最小化
  5. 针对mysql数据库的用户处理,还有更严格的做法,例如删除root用户,添加新的管理员用户
truncalt table test和delete from test;区别
1.truncate table test;速度更快。直接清空对应数据的物理文件。
2、delete from test;速度慢,逻辑清除,按行删

为管理员root用户设置密码方法

  1. mysqladmin -u root password oldboy  #没有密码的情况下
  2. mysqladmin -uroot -p oldboy password oldboy123 -S /data/3306/mysql.sock

适合多实例更改密码,强调,以上命令的是命令行执行,而不是进入root

 

修改管理员root密码法一:linux命令修改法

  1. mysqladmin -uroot -p oldboy password oldboy123   #原密码,新密码
  2. mysqladmin -uroot -p oldboy password oldboy456 -S /data/3306/mysql.sock适合多实例

修改管理员root密码法二:****sql
语句修改法

  1. mysql> update mysql.user set password=oldboy456 where user='root' and host='localhost'; 这样设置是不可以登录的

这样设置的密码不可以使用,需要加密

  1. mysql> update mysql.user set password=password('oldboy456') where user='root' and host='localhost';

结果: 如果不使用password这个变量 下面的密码将会是明文,明文我们无法登录

  1. mysql> select user,host,password from mysql.user;
  2. +------+-----------+-------------------------------------------+
  3. | user | host      | password                                  |
  4. +------+-----------+-------------------------------------------+
  5. | root | localhost | *7DB922C59F217871B8165D72BEC8ED731A0EFFA1 |
  6. | root | db01      |                                           |
  7. | root | 127.0.0.1 |                                           |
  8. | root | ::1       |                                           |
  9. |      | localhost |                                           |
  10. |      | db01      |                                           |
  11. +------+-----------+-------------------------------------------+
  12. 6 rows in set (0.00 sec)
  13. Rows matched: 1  Changed: 1  Warnings: 0需要查看是否成功,出现Changed代表成功

设置完成之后我们需要刷新才可以登录

  1. mysql> flush privileges;

修改管理员root(所有)密码法三

  1. set password=password('oldboy123');

 

MySQL密码丢失如何找回?

单实例

  1. a、/etc/init.d/mysqld stop
  2. bmysqld_safe --skip-grant-tables --user=mysql &
  3. cmysql
  4. d、修改完密码重启
  5. e、/etc/init.d/mysqld restart

多实例

  1. 1./data/3306/mysql    stop  无法停止
  2. 2.killall mysqld
  3. 3.mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-tables --user=mysql &
  4. 4.update mysql.user set password=password('oldboy456') where user='root' and host='localhost';
  5. 5.flush privileges;
  6. 6.mysql 登录
  7. 7.mysqladmin -uroot -poldboy shutdown
  8. 8./etc/init.d/mysqld start

5.1 启动与关闭MYSQL命令及工作原理
5.2 
登陆MYSQL方法
5.4 
善用MYSQL的帮助命令HELP
5.5 
退出MYSQL数据库方法
5.6 
设置及修改MYSQL ROOT用户密码
5.6.1 MySQL
数据库用户安全策略介绍
5.6.2 
为管理员root用户设置密码方法
5.7 
找回丢失的MYSQL ROOT用户密码

 

 

SQL结构化查询语言

什么是SQL

    SQL,英文全称Structured Query Language,中文意思是结构化查询语言,它是一种对关系型数据库中的数据进行定义和操作的语言方法,是大多数关系数据库管理系统所支持的工业标准语言。

    结构化查询语言SQL是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,同时用sql作为MySQL逻辑备份文件的扩展名。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。他不要求用户指定对数据存放方法,也不需要用户了解具体的数据存放方式。

 

小结:SQL语句最常见的分类一般就是3

DDLData
Definition Language
)——数据定义语言(CREATEALTERDROP

管理基础数据,例如:库,表

DCL Data
Control Language
)——数据控制语言(GRANTREVOKECOMMITROLLBACK

用户授权,权限回收,数据提交回滚等

DMLData
Manipulation Language
)——数据操作语言(SELECTINSERTDELETE,UPDATE)针对数据库里的表里的数据进行操作,记录

命令讲解

创建数据库

  1. mysql> create database oldboy;

查看创建库的语句

  1. show create database oldboy;
  2. +----------+-----------------------------------------------------------------+
  3. | Database | Create Database|
  4. +----------+-----------------------------------------------------------------+
  5. | oldboy   | CREATE DATABASE `oldboy` /*!40100 DEFAULT CHARACTER SET utf8 */ |
  6. +----------+-----------------------------------------------------------------+
  7. 1 row in set (0.00 sec)

编译的时候指定了utf8 所以这里显示utf8

  1. 1.网站程序字符集
  2. 2.客户端的字符集
  3. 3.服务器端字符集
  4. 4.linux客户端字符集
  5. 5.以上都要统一,否则会出现中文乱码

创建不同字符集格式的数据库命令

  1. mysql> create database oldboy;          #默认数据库配置,相当于创建拉丁字符集数据库
  2. mysql> create database oldboy_gbk character set gbk collate gbk_chinese_ci;创建gbk格式文件
  3. mysql> help create database
  4. mysql> show character set;           #查看字符集
  5. mysql> show create database oldboy_gbk;
  6. +------------+--------------------------------------------------------------------+
  7. | Database| Create Database|
  8. +------------+--------------------------------------------------------------------+
  9. | oldboy_gbk | CREATE DATABASE `oldboy_gbk` /*!40100 DEFAULT CHARACTER SET gbk */ |
  10. +------------+--------------------------------------------------------------------+
  11. 1 row in set (0.00 sec)

 

如果编译的时候指定了特定的字符集,则以后创建对应字符集的数据库就不需要指定字符集

  1. -DDEFAULT_CHARSET=utf8 \
  2. -DDEFAULT_COLLATION=utf8_general_ci \
  3. -DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \
  4. 提示:二进制软件包,安装的数据库字符集默认latinl

 

查看数据库

  1. show databases;
  2. select database();     #相当于pwd
  3. select user();         #查看当前用户
  4. select version();   #查看当前版本
  5. ()可以说是函数

 

当前数据库包含的表信息

  1. use oldboy      #相当于cd
  2. show tables     #查看表
  3. or
  4. show tables from wordpress      #查看wordpress库下的表文件

删除用户

  1. drop user 'root'@'::1';
  2. 如果drop删除不了(一般reshuffle符号或大写)可以用下面方式删除(以root,用户为例)
  3. delete from mysql.user where user=’root and host=’oldboy’;
  4. flush privileges;

创建MySQL用户及赋予用户权限

1、通过在mysql中输入helpe grant得到如下信息

  1. CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';
  2. GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
  3. GRANT SELECT ON db2.invoice TO 'jeffrey'@'localhost';
  4. GRANT USAGE ON *.* TO 'jeffrey'@'localhost' WITH MAX_QUERIES_PER_HOUR 90;

2、通过grant命令创建用户并授权

  1. agrant命令简单语法如下:
  2. grant all privileges on dbname.* to username@localhost identified by passwd’;

b、列表说明如下:

grant

all

on dbname.*

to username@localhost

identified bypasswd

授权命令

对应权限

目标:库和表

用户名和客户端主机

用户密码

说明:上述命令是授权localhost主机上通过用户username管理dbname数据库的所有权限,密码为passwd,其中usernamedbnamepasswd可根据业务的情况修改

 

    对于web连接用户授权尽量采用最小化原则,很多开源软件都是web界面安装,因此在安装期间除了select,insert,update,delete 4个权限外,还需要create,drop等比较危险的权限。

  1. grant select,insert,update,create,drop on blog.* to blog@localhost identified by 123

  常规情况下授权select,insert,update,delete4个权限即可,有的源软件,例如discuz,bbs还需要create,drop等比较危险的权限。生成数据库表后,要收回createdrop授权。

生产环境针对主库(写入主读为辅)用户的授权;

普通环境:

  1. 本机:lnmplamp环境数据库授权
  2. grant all privileges ON blog.* to blog@localhost identified by 123456
  3. 应用服务器和数据库服务器不在一个主机上授权;
  4. grant all privileges ON blog.* to blog@10.0.0.% identified by 123
  5. 严格的授权:重视安全,忽略了方便;
  6. grant select,insert,update,delete ON blog.* to blog@10.0.0.% identified by 123
  7. 生产环境从库(只读)用户的授权;
  8. grant select ON blog.* to blog@10.0.0.% identified by 123
  9. 查看授权用户oldboy的具体的授权权限
  10. show grants for oldboy’@’localhost’;

 

 

3、案例1.创建oldboy用户,对test库具备所有权限,允许从localhost主机登录,密码是oldboy123

  1. grant all on test.* to oldboy@localhost identified by oldboy123’;

第一种:授权用户

  1. grant all on test.* to oldboy@127.0.0.% identified by oldboy123
  2. show grants for oldboy@127.0.0.%’;           查看授权用户
  3. +-------------------------------------------------------------------------------------------------------------+
  4. | Grants for root@127.0.0.1|
  5. +-------------------------------------------------------------------------------------------------------------+
  6. | GRANT USAGE ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
  7. | GRANT ALL PRIVILEGES ON `test`.* TO 'root'@'127.0.0.1'                                                      |
  8. +-------------------------------------------------------------------------------------------------------------+
  9. 2 rows in set (0.00 sec)

第二种:授权方法

  1. create user bbs@'172.16.1.1/255.255.255.0' identified by '123456'
  2. 先授权可以登录的
  3. mysql> show grants for bbs@'172.16.1.1/255.255.255.0';
  4. mysql> grant select on wordpress.* to bbs@'172.16.1.1/255.255.255.0';

授权局域网主机连接远程数据库

a.一条命令百分号匹配法

  1. grant all on *.* totest@10.0.0.%’identified by test123’;

b、一条命令子网掩码配置法

  1. grant all on *.* to test@10.0.0.0/255.255.255.0 identified by test123’;

c、两条命令实现

先创建用户并设置密码;

  1. create user test@10.0.0.%’ identified by test123’;

再对用户授权指定权限和管理库表

  1. grant all on *.* to test@10.0.0.0/255.255.255.0

最后记得上述每条grant命令都要刷新权限

  1. flush privilege

数据库远程登录

  1. mysql -uwordpress -poldboy123 -h 172.16.1.51 -P3306
  2. -h指定IP地址,-P指定服务端口号

创建类似于root系列的管理员用户,可以创建下级用户的用户

  1. grant all privileges on *.* to root@'127.0.0.1' identified by 'oldboy123' with grant option;
  2. 只需要在最后输入with grant option

 

回收用户权限

  1. REVOKE INSERT ON *.* FROM 'jeffrey'@'localhost';

 

显示库的信息

  1. mysql> show create database oldboy\G  

MySQL包含关系

数据库服务器>数据库(多个实例)>多个库>多个表>多个字段行列(数据)

创建表

建表的基本命令语法:

  1. create table <表名>(
  2. <字段名1><类型n>);
  3. 提示:其中create table是关键字,不能更改,但是大小写可以变化

建表语句

下面是人工写法设计的建表语句例子,表名student

  1. create table student(
  2. id int(4) not null,
  3. name char(20) not null,
  4. age tinyint(2)  NOT NULL default '0',
  5. dept varchar(16)  default NULL
  6. );

查看创建表的语句

  1. mysql> show create table student;
  2. create table student(       #create table表示创建表的固定关键字,student为表名
  3. id int(4) not null,        #学号列,数字类型,长度为4,不能为空值
  4. name char(20) not null,    #名字列,定长字符类型,长度20,不能为空
  5. age tinyint(2)  NOT NULL default '0', #年龄列,很小的数字类型,长度为2,不能为空,默认为0值
  6. dept varchar(16)  default NULL    #系别列,变长字符类型,长度16,默认为空。
  7. ENGINE=lnnoDB DEFAULT CHARSET=latinl  #引擎和字符集,引擎默认为InnoDB,字符集,继承库的latinl
  8. );
  9.  

student表的直观显示,可以用下面表格显示。

  1. create table student(
  2. id int(4) not null,
  3. name char(20) not null,
  4. age tinyint(2)  NOT NULL default '0',
  5. dept varchar(16)  default NULL
  6. )ENGINE=InnoDB DEFAULT CHARSET=latinl;

需要注意的事:MySQL5.1MySQL5.5
环境的默认建表语句中的引擎的不同,如果希望控制引擎,就要在建表语句里显示的指定引擎建表;

MySQL5.1以及默认引擎为MyISAMMySQL5.5
以后默认引擎为InnoDB

MySQL表的字段类型

1) 数字类型

2)日期和时间类型(DATE 日期类型:支持的范围是1000-01-019999-12-31MySQLYYYY-MM-DD格式来显示DATE值,但是允许你使用字符串或数字把值赋给DATE列)

3)字符串类型

1、 INT[(M)]型:正常大小整数类型

2、 CHAR(M)型:定长字符串类型,当存储时,总是用空格填满右边到指定的长度

3、 VARCHAR型:变长字符串类型

有关MySQL字段类型详细内容,可以参考MySQL手册

1. INT[(M)]型:正常大小整数类型

2. DOUBLE[M,D] [ZEROFILL]型:正常大小(双精密)浮点数字类型

3. DATE 日期类型:支持的范围是1000-01-019999-12-31.MySQLYYY-MM-DD格式来显示DATE值,但是允许你使用字符串给数字把值赋给DATE

4. CHAR(M)型:定长字符串类型,当存储时,总是是用空格填满右边到指定的长度

5. BLOB TEXT类型,最大长度655352^16-1)个字符

6. VARCHAR型:变长字符串类型

下面的图说明了CHARVARCHAR之间的差别:

解释:例如,VARCHAR(10)列可以容纳最大长度为10的字符串。实际存储需求是字符串(L)的长度,加上一个记录字符串长度的字节。对于字符串abcdL4,存储需要5个字节。

 

小结

1、 char定长,不够的用空格补全,浪费存储空间,查询速度快,多数系统表字段都是定长

2、 varchar变长,查询速度慢

例子:mysql.user用的就是定长

  1. `Password` char(41) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',

user表用的是CHAR

生产场景案例:

sns产品生产正式建表语句

  1. use sns;
  2. set names gbk;
  3. CREATE TABLE `subject_comment_manager` (
  4.   `subject_comment_manager_id` bigint(12) NOT NULL auto_increment COMMENT '主键',
  5.   `subject_type` tinyint(2) NOT NULL COMMENT '素材类型',
  6.   `subject_primary_key` varchar(255) NOT NULL COMMENT '素材的主键',
  7.   `subject_title` varchar(255) NOT NULL COMMENT '素材的名称',
  8.   `edit_user_nick` varchar(64) default NULL COMMENT '修改人',
  9.   `edit_user_time` timestamp NULL default NULL COMMENT '修改时间',
  10.   `edit_comment` varchar(255) default NULL COMMENT '修改的理由',
  11.   `state` tinyint(1) NOT NULL default '1' COMMENT '0代表关闭,1代表正常',
  12.   PRIMARY KEY  (`subject_comment_manager_id`),
  13.   KEY `IDX_PRIMARYKEY` (`subject_primary_key`(32)), #<==括号内的32表示对前32个字符做前缀索引。
  14.   KEY `IDX_SUBJECT_TITLE` (`subject_title`(32))
  15.   KEY `index_nick_type` (`edit_user_nick`(32),`subject_type`)#<==联合索引,此行为新加的,用于给大家讲解的。实际表语句内没有此行。
  16. ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

 

为表的字段创建索引* * * * * *

  1. 索引就象书的目录一样,如果在字段上建立了索引,那么以索引为查询条件时可以加快查询数据的速度,这是mysql优化的重要内容之一。
  2. 创建主键索引
  3. 查询数据库,按主键查询是最快的,每个表只有一个主键列,但是可以用多个普通索引列。主键列要求列的所有内容必须唯一,而普通索引不要求内容必须唯一
  4. 主键就类似我们在学校学习时的学号一样,班级内是唯一的,整个表的每一条记录的主键值在表内都是唯一的,用来唯一标识一条记录。
  5. 首先,无论建立主键索引还是普通索引,都要在表的对应列上创建,可以对单列创建索引,也可以对多列创建索引。
  6. 为表的字段创建索引*****
  7. 数据库的索引就象书的目录一样,如果在字段上建立了索引,那么多以索引列为查询条件时可以加快查询数据的速度,这是mysql优化的重要内容之一。
  8. 创建主键索引      
  9. 查询数据库,按主键查询是最快的,每个表只能有一个主键列,但是可以有多个普通索引列。主键列的所有内容必须唯一,而普通索引列不要求内容必须唯一。
  10. 主键就类似我们在学习学习时的学号一样,班级内是唯一的,整个表的每一条记录的主键值在表内都是唯一的,用来唯一标识一条记录。
  11. 首先,无论建立主键索引还是普通索引,都要在表的对应列上创建,可以对单列创建索引,也可以对多列创建索引。

 

建立主键索引的方法:

1)在建表示,可以增加建立主键索引的句子如下:

  1. drop table student;
  2. create table student(
  3. id int(4) not null AUTO_INCREMENT,
  4. name char(20) not null,
  5. age tinyint(2)  NOT NULL default '0',
  6. dept varchar(16)  default NULL,
  7. primary key(id),
  8. KEY index_name(name)
  9. );

提示:

1、primary key(id)<==主键

2、KEY index_name(name)<==name字段普通索引

  1. 2mysql> desc student; 查看刚刚创建的表结构。
  2. +-------+-------------+------+-----+---------+----------------+
  3. | Field | Type        | Null | Key | Default | Extra          |
  4. +-------+-------------+------+-----+---------+----------------+
  5. | id    | int(4)      | NO   | PRI | NULL    | auto_increment |
  6. | name  | char(20)    | NO   | MUL | NULL    |                |
  7. | age   | tinyint(2)  | NO   || 0       |                |
  8. | dept  | varchar(16) | YES  |     | NULL|                |
  9. +-------+-------------+------+-----+---------+----------------+

PRL为主键的标示,MUL为普通索引的表示

auto_increnment 代表数据自增

 

利用alter命令修改id列为自增主键值

  1. alter table student change id id int primary key auto_increment; 

创建的表的时候,可以指定

  1. mysql> create table student(
  2. id int(4) not null AUTO_INCREMENT,
  3. name char(20) not null,
  4. age tinyint(2) NOT NULL default '0',
  5. dept varchar(16)  default NULL,
  6. primary key(id),
  7. KEY index_name(name)      
  8. );

提示:

KEY index_name
(name)

<==name
字段普通索引

优化:在唯一值多的列上建索引查询效率高

还可以自定义自增的长度

  1. EBGUBE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

查看索引(可能会不清晰)【前提都需要进入库

  1. mysql> show index from student; 

查看索引\G 可以查看的更详细

  1. mysql> show index from student\G      
  2. *************************** 1. row ***************************  主建  一个表只能有一个
  3.         Table: student
  4.    Non_unique: 0
  5.      Key_name: PRIMARY    
  6.  Seq_in_index: 1
  7.   Column_name: id
  8.     Collation: A
  9.   Cardinality: 0
  10.      Sub_part: NULL
  11.        Packed: NULL
  12.          Null:
  13.    Index_type: BTREE           表类型
  14.       Comment:
  15. Index_comment:
  16. *************************** 2. row ***************************  索引 一个表可以有多个
  17.         Table: student
  18.    Non_unique: 1
  19.      Key_name: index_name   名字
  20.  Seq_in_index: 1
  21.   Column_name: name        
  22.     Collation: A
  23.   Cardinality: 0
  24.      Sub_part: NULL
  25.        Packed: NULL
  26.          Null:
  27.    Index_type: BTREE                  类型
  28.       Comment:
  29. Index_comment:
  30. 2 rows in set (0.00 sec)

查看表结构

  1. desc student 

建表后利用alter增加普通索引,删除建表时创建的index_name索引、

  1. alter table student drop index index_name;

删除索引

  1. alter table student drop index index_name;

图文解释:

alter

table

student

drop

index

index_name

删除

表示表

表名

删除

表示删除索引

索引名字

查看表结构是否有索引

|
name  | char(20)    | NO|     | NULL    |

name上面添加索引 常用命令alter(修改)

  1. alter table student add index index_name(name);

修改命令

表示表

表明

参数

表示修改索引

修改什么,并在那一列

alter

table

student

add

index

index_name(name)

| name  |
char(20)    | NO   | MUL | NULL    |

 

生产场景案例:

    数据量很大的时候,不适合建立索引,会影响用户访问。曾经400-500万条记录的表,建立索引,花了90-180秒。尽量选择在业务低估时建立索引

 

  1. 创建索引的第二种方法,效率更高
  2. 对字段的前n个字符创建普通索引
  3. 当遇到表中比较大列时,列内容的前n个字符在所有内容中已经接近唯一时,这时可以对列的前n个字符建立索引,而无需对整个列建立索引,这样可以节省创建索引真用的系统空间,以及降低读取和更新维护索引消耗的系统资源。

对字段的前n个字符创建普通索引的语句:

  1. create index index_name on test(name(8)); <==条件列前n个字符创建索引
创建

索引

索引名字

on

student(dept(8))

create

index

index_dept

哪一行

表,列的前8个字符

dept  |
varchar(16) | YES  |     | NULL|     

dept  |
varchar(16) | YES  | MUL | NULL    |

Sub_part: 8               一部分

操作实践:

name创建索引,也可以按照上述进行指定字节

  1. create index index_name on student(name);

查看索引

  1. mysql> show index from student;

创建语句

  1. create index index_age on student(name(8));

—————————————

  1. show index from student\G
  2. 查看       位置表明     显示
  3. *************************** 3. row ***************************
  4. Table: student
  5. Non_unique: 1
  6.      Key_name: index_age
  7.  Seq_in_index: 1
  8. Column_name: age
  9. Collation: A
  10. Cardinality: 0
  11.      Sub_part: 8
  12. Packed: NULL
  13. Null: YES
  14. Index_type: BTREE
  15. Comment:
  16. Index_comment:
  17. 3 rows in set (0.00 sec)

为表的多个字段创建联合索引

  如果查询数据的条件是多列时,我们可以为多个查询的列创建联合索引,甚至,可以为多个列的前n个字符创建联合索引,演示如下:

创建联合索引,和单个索引不冲突

  1. mysql>  create index ind_name_dept on student(name,dept);

联合索引作用,查询更快

  1. mysql> show index from student\G
  2. *************************** 1. row ***************************
  3. Table: student
  4. Non_unique: 0
  5. Key_name: PRIMARY
  6.  Seq_in_index: 1
  7. Column_name: id
  8. Collation: A
  9. Cardinality: 0
  10. Sub_part: NULL
  11. Packed: NULL
  12. Null:
  13. Index_type: BTREE
  14. Comment:
  15. Index_comment:
  16. *************************** 2. row ***************************
  17. Table: student
  18. Non_unique: 1
  19. Key_name: index_name
  20.  Seq_in_index: 1
  21. Column_name: name
  22. Collation: A
  23. Cardinality: 0
  24. Sub_part: NULL
  25. Packed: NULL
  26. Null:
  27. Index_type: BTREE
  28. Comment:
  29. Index_comment:
  30. *************************** 3. row ***************************
  31. Table: student
  32. Non_unique: 1
  33. Key_name: index_age
  34.  Seq_in_index: 1
  35. Column_name: name
  36. Collation: A
  37. Cardinality: 0
  38. Sub_part: 8
  39.        Packed: NULL
  40. Null:
  41. Index_type: BTREE
  42. Comment:
  43. Index_comment:
  44. *************************** 4. row ***************************
  45. Table: student
  46. Non_unique: 1
  47.      Key_name: ind_name_dept
  48.  Seq_in_index: 1
  49. Column_name: name
  50. Collation: A
  51. Cardinality: 0
  52. Sub_part: NULL
  53. Packed: NULL
  54. Null:
  55. Index_type: BTREE
  56. Comment:
  57. Index_comment:
  58. *************************** 5. row ***************************
  59. Table: student
  60. Non_unique: 1
  61.      Key_name: ind_name_dept
  62.  Seq_in_index: 2
  63. Column_name: dept
  64. Collation: A
  65. Cardinality: 0
  66. Sub_part: NULL
  67. Packed: NULL
  68. Null: YES
  69. Index_type: BTREE
  70. Comment:
  71. Index_comment:
  72. 5 rows in set (0.00 sec)

创建联合索引,并指定值大小

  1. create index ind_name_dept on student(name(8),dept(10));
  2. name 8个字符,dept 10个字符

  1. *************************** 2. row ***************************
  2. Table: student
  3. Non_unique: 1
  4.      Key_name: index_dept
  5.  Seq_in_index: 1
  6. Column_name: name
  7. Collation: A
  8. Cardinality: 0
  9.      Sub_part: 8
  10. Packed: NULL
  11. Null:
  12. Index_type: BTREE
  13. Comment:
  14. Index_comment:
  15. *************************** 3. row ***************************
  16. Table: student
  17. Non_unique: 1
  18.      Key_name: index_dept
  19.  Seq_in_index: 2
  20. Column_name: dept
  21. Collation: A
  22. Cardinality: 0
  23.      Sub_part: 10
  24. Packed: NULL
  25. Null: YES
  26. Index_type: BTREE
  27. Comment:
  28. Index_comment:
  29. 3 rows in set (0.00 sec)

提示:尽量在唯一值多的大表上建立索引。

什么时候创建联合索引?

只有程序用这两个条件查询,采用联合索引,这个主要是看开发。

提示:按条件列查询数据时,联合索引是由前缀生效特性的

 

创建唯一索引(非主键)

  1. create unique index uni_ind_name on student(name);

 

索引小结:

  1. 创建主键索引
  2. alter table student chage id id int primary key auto_increment;
  3. 删除主键索引(主键列不能自增)
  4. alter table student drop primary key;
  5. 创建普通索引
  6. alter table student add index index_dept(dept);
  7. 根据的前n个字符创建索引
  8. create index index_dept on student(dept(8));
  9. 根据多个列创建联合索引
  10. create index index_name_dept on student(name,dept);
  11. 创建唯一索引
  12. create unique index uni_ind_name on student(name);
  13. 删除普通索引与唯一索引
  14. alter table student drop index index_dept;
  15. drop index index_dept on student;

索引列的创建及生效条件

问题1、既然索引可以加快查询速度,那么就给所有的列加索引吧?

解答:因为索引不但占用系统空间,而且更新数据时还需要维护索引数据的,因此索引是一把双刃剑,并不是越多越好,例如:数十到几百行的小表上无需建立索引,插入更新频繁,读取比较少的需要少建立索引

问题2、需要在哪些列上创建索引才能加快查询速度呢?

select user,host from mysql.user where
password=…..,
索引一定要创建在where后的条件列上,而不是select后的选择数据的列上。另外,我们要尽量选择在唯一值多的大表上的列建立索引,例如,男女生性别列唯一值少,不适合建立索引。

 

查看唯一值数量

  1. select count(distinct user) from mysql.user;

唯一值就是相同的数量,例如查询user那么相同的user就是唯一值

  1. mysql> select count(distinct user) from mysql.user;
  2. +----------------------+
  3. | count(distinct user) |
  4. +----------------------+
  5. |                    7 |
  6. +----------------------+
  7. 1 row in set (0.07 sec)
  8.  

用户列表,根据上放进行解释

  1. mysql> select user,host from mysql.user;
  2. +-----------+---------------------------+
  3. | user| host                      |
  4. +-----------+---------------------------+
  5. | cyh| 10.1.1.%                  |
  6. | root| 127.0.0.1                 |
  7. | bbs| 172.16.1.1/255.255.255.0  |
  8. | wordpress | 192.168.1.%               |
  9. | oldboy| 192.168.1.%/255.255.255.0 |
  10. | abc| localhost                 |
  11. | blog| localhost                 |
  12. | oldboy| localhost                 |
  13. | root| localhost                 |
  14. +-----------+---------------------------+
  15. 9 rows in set (0.00 sec)

 

创建索引的基本知识小结:

  • 索引类似书籍的目录,会加快查询数据的速度
  • 要在表的列(字段)上创建索引
  • 索引会加快查询速度,但是也会影响更新的速度,因为更新要在维护索引数据
  • 索引列并不是越多越好,要在频繁查询的表语句where后的条件列上创建索引
  • 小表或重复值很多的列上可以不建索引,要在大表以及重复值少的条件上创建索引
  • 多个列联合索引有前缀生效特性
  • 当字段内容前N个字符已经接近唯一时,可以对字段的前N个字符创建索引
  • 索引从工作方式区别,有主键,唯一,普通索引
  • 索引类型有BTREE(默认)hash(适合做缓存(内存数据库))等。

主键索引和唯一索引的区别

(1)对于主键/unique constraint  oracle/sql server/mysql等都会自动建立唯一索引;
(2)
主键不一定只包含一个字段,所以如果你在主键的其中一个字段建唯一索引还是必要的;
(3)
主健可作外健,唯一索引不可;
(4)
主健不可为空,唯一索引可;
(5)
主健也可是多个字段的组合;
(6)
主键与唯一索引不同的是:
a.
not null属性;
b.
每个表只能有一个。

 

往表中插入数据

(1)    命令语法

  1. insert into <表名>[(<字段名1>[..<字段名n>])]values(值1)[,(值n)]

(2)    建立一个简单的测试表test

  1. CREATE TABLE `test` (
  2.    `id` int(4) NOT NULL AUTO_INCREMENT,
  3.   `name` char(20) NOT NULL,
  4.   PRIMARY KEY (`id`)
  5. ) ;
  6. mysql> desc test;
  7. +-------+----------+------+-----+---------+----------------+
  8. | Field | Type     | Null | Key | Default | Extra          |
  9. +-------+----------+------+-----+---------+----------------+
  10. | id    | int(4)   | NO   | PRI | NULL    | auto_increment |
  11. | name  | char(20) | NO   |     | NULL|                |
  12. +-------+----------+------+-----+---------+----------------+

插入值

  1. insert into test(id,name) values(1,'oldboy');
  2. insert into test(id,name) values(1,'oldboy');

insert

into

testid,name

values1‘oldboy’

固定不能

固定不变

表明,指定列

插入值1,字符串’’

查询

  1. mysql> select * from test;
  2. +----+--------+
  3. | id | name   |
  4. +----+--------+
  5. |  1 | oldboy |
  6. +----+--------+
  7. 1 row in set (0.00 sec)

第二种方法:

id列可以不指定,不指定就自己增长

  1. insert into test(name) values('oldgirl'); 
  2. mysql> select * from test;
  3. +----+---------+
  4. | id | name|
  5. +----+---------+
  6. |  1 | oldboy  |
  7. |  2 | oldgirl |
  8. +----+---------+
  9. 2 rows in set (0.00 sec)

第三种方法,可以不指定列,后面按照循序插入

  1. mysql> insert into test values(3,'inca');
  2. Query OK, 1 row affected (0.00 sec)
  3.  
  4. mysql> select * from test;
  5. +----+---------+
  6. | id | name|
  7. +----+---------+
  8. |  1 | oldboy  |
  9. |  2 | oldgirl |
  10. |  3 | inca|
  11. +----+---------+
  12. 3 rows in set (0.00 sec)

批量插入:

  1. mysql> insert into test values(4,'zuma'),(5,'kaka');
  2. Query OK, 2 rows affected (0.00 sec)
  3. Records: 2Duplicates: 0  Warnings: 0
  4.  
  5. mysql> select * from test;
  6. +----+---------+
  7. | id | name|
  8. +----+---------+
  9. |  1 | oldboy  |
  10. |  2 | oldgirl |
  11. |  3 | inca    |
  12. |  4 | zuma|
  13. |  5 | kaka|
  14. +----+---------+
  15. 5 rows in set (0.00 sec)

清空所有值

  1. mysql> truncate table test;
  2. Query OK, 0 rows affected (0.00 sec)
  3.  
  4. mysql> select * from test;
  5. Empty set (0.00 sec)

一条命令解决以上所有配置

  1. mysql> insert into test values (1,'oldboy'),(2,'oldgirl'),(3,'inca'),(4,'zuma'),(5,'kaka');
  2. Query OK, 5 rows affected (0.01 sec)
  3. Records: 5Duplicates: 0  Warnings: 0
  4.  
  5. mysql> select * from test;
  6. +----+---------+
  7. | id | name|
  8. +----+---------+
  9. |  1 | oldboy  |
  10. |  2 | oldgirl |
  11. |  3 | inca    |
  12. |  4 | zuma    |
  13. |  5 | kaka    |
  14. +----+---------+
  15. 5 rows in set (0.00 sec) 

查询数据

查询表的所有数据行

1.命令句法:select<字段1,字段2…>frin
<
表名>where<表达式>

其中,select,from,where是不能随便改的,是关键字,支持大小写

2.列:查看表test中所有数据

a.进入指定库后查询

如果不进入库可以使用

  1. mysql> select * from oldboy.test;
  2. mysql> select user,host,password from mysql.user;

  1. +-----------+---------------------------+-------------------------------------------+
  2. | user| host                      | password|
  3. +-----------+---------------------------+-------------------------------------------+
  4. | root| localhost                 | *7495041D24E489A0096DCFA036B166446FDDD992 |
  5. | root| 127.0.0.1                 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
  6. | wordpress | 192.168.1.%               | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
  7. | cyh| 10.1.1.%                  | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
  8. | bbs| 172.16.1.1/255.255.255.0  | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
  9. | blog| localhost                 | *7495041D24E489A0096DCFA036B166446FDDD992 |
  10. | oldboy| localhost                 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
  11. | oldboy| 192.168.1.%/255.255.255.0 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
  12. | abc| localhost                 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
  13. +-----------+---------------------------+-------------------------------------------+

只查询前2行内容

  1. mysql> select * from test limit 2;
  2. +----+---------+
  3. | id | name    |
  4. +----+---------+
  5. |  1 | oldboy  |
  6. |  2 | oldgirl |
  7. +----+---------+
  8. 2 rows in set (0.00 sec)

从第二条开始查,查找2

  1. mysql> select * from test limit 1,2;
  2. +----+---------+
  3. | id | name|
  4. +----+---------+
  5. |  2 | oldgirl |
  6. |  3 | inca    |
  7. +----+---------+
  8. 2 rows in set (0.00 sec)

按照条件查询

  1. mysql> select * from test where id=1;
  2. +----+--------+
  3. | id | name|
  4. +----+--------+
  5. |  1 | oldboy |
  6. +----+--------+
  7. 1 row in set (0.00 sec)

提示:mysql> select * from test where name=’oldboy’;
<==
查询字符串要加引号

  1. mysql> select * from test where name='oldboy';
  2. +----+--------+
  3. | id | name   |
  4. +----+--------+
  5. |  1 | oldboy |
  6. +----+--------+
  7. 1 row in set (0.00 sec)

提示:查找字符串类型的条件的值要带单引号,数字值不带引号。

查询多个条件

  1. mysql> select * from test where name='oldgirl' and id=2;
  2. +----+---------+
  3. | id | name    |
  4. +----+---------+
  5. |  2 | oldgirl |
  6. +----+---------+
  7. 1 row in set (0.00 sec)

范围查询

  1. mysql> select * from test where id>2;
  2. +----+------+
  3. | id | name |
  4. +----+------+
  5. |  3 | inca |
  6. |  4 | zuma |
  7. |  5 | kaka |
  8. +----+------+
  9. 3 rows in set (0.00 sec)
  10. mysql> select * from test where id>2 and id<5;
  11. +----+------+
  12. | id | name |
  13. +----+------+
  14. |  3 | inca |
  15. |  4 | zuma |
  16. +----+------+
  17. 2 rows in set (0.35 sec)

或者的意思

  1. mysql> select * from test where id>2 or id<5;
  2. +----+---------+
  3. | id | name    |
  4. +----+---------+
  5. |  1 | oldboy  |
  6. |  2 | oldgirl |
  7. |  3 | inca    |
  8. |  4 | zuma    |
  9. |  5 | kaka    |
  10. +----+---------+
  11. 5 rows in set (0.34 sec)

排序

什么都不加相当于升序

  1. mysql> select * from test;
  2. 相当于
  3. mysql> select * from test order by id asc;     写法
  4. 倒序
  5. mysql> select * from test order by id desc;  倒序

 

例子:创建学生表

  1. drop table student;
  2. create table student(
  3. Sno int(10) NOT NULL COMMENT '学号',
  4. Sname varchar(16) NOT NULL COMMENT '姓名',
  5. Ssex char(2) NOT NULL COMMENT '性别',
  6. Sage tinyint(2)  NOT NULL default '0' COMMENT '学生年龄',
  7. Sdept varchar(16)  default NULL  COMMENT '学生所在系别', 
  8. PRIMARY KEY  (Sno) ,
  9. key index_Sname (Sname)
  10. ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

插入内容

  1. create table course(
  2. Cno int(10) NOT NULL COMMENT '课程号',
  3. Cname varchar(64) NOT NULL COMMENT '课程名',
  4. Ccredit tinyint(2) NOT NULL COMMENT '学分',
  5. PRIMARY KEY  (Cno) 
  6. ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

插入内容

  1. CREATE TABLE `SC` (
  2.    SCid int(12) NOT NULL auto_increment COMMENT '主键',
  3.   `Cno` int(10) NOT NULL COMMENT '课程号',
  4.   `Sno` int(10) NOT NULL COMMENT '学号',
  5.   `Grade` tinyint(2) NOT NULL COMMENT '学生成绩',
  6.   PRIMARY KEY  (`SCid`)
  7. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

插入内容

  1. INSERT INTO course values(1001,'Linux中高级运维',3);
  2. INSERT INTO course values(1002,'Linux高级架构师',5);
  3. INSERT INTO course values(1003,'MySQL高级Dba',4);
  4. INSERT INTO course values(1004,'Python运维开发',4);
  5. INSERT INTO course values(1005,'Java web开发',3);

插入内容

  1. INSERT INTO SC(Sno,Cno,Grade)  values(0001,1001,4);
  2. INSERT INTO SC(Sno,Cno,Grade) values(0001,1002,3);
  3. INSERT INTO SC(Sno,Cno,Grade)  values(0001,1003,1);
  4. INSERT INTO SC(Sno,Cno,Grade)  values(0001,1004,6);

  1. INSERT INTO SC(Sno,Cno,Grade)  values(0002,1001,3);
  2. INSERT INTO SC(Sno,Cno,Grade)  values(0002,1002,2);
  3. INSERT INTO SC(Sno,Cno,Grade)  values(0002,1003,2);
  4. INSERT INTO SC(Sno,Cno,Grade)  values(0002,1004,8);
  5. INSERT INTO SC(Sno,Cno,Grade)  values(0003,1001,4);
  6. INSERT INTO SC(Sno,Cno,Grade)  values(0003,1002,4);
  7. INSERT INTO SC(Sno,Cno,Grade)  values(0003,1003,2);
  8. INSERT INTO SC(Sno,Cno,Grade)  values(0003,1004,8);
  9. INSERT INTO SC(Sno,Cno,Grade)  values(0004,1001,1);
  10. INSERT INTO SC(Sno,Cno,Grade)  values(0004,1002,1);
  11. INSERT INTO SC(Sno,Cno,Grade)  values(0004,1003,2);
  12. INSERT INTO SC(Sno,Cno,Grade)  values(0004,1004,3);
  13. INSERT INTO SC(Sno,Cno,Grade)  values(0005,1001,5);
  14. INSERT INTO SC(Sno,Cno,Grade)  values(0005,1002,3);
  15. INSERT INTO SC(Sno,Cno,Grade)  values(0005,1003,2);
  16. INSERT INTO SC(Sno,Cno,Grade)  values(0005,1004,9);

检查,查看表格式或者表内容

  1. mysql>desc SC; or select * from SC;

需求:统计学号、姓名、选的课程、学分

select
student.Sno,student.Sname,course.Cname,SC.Grade from student,course,SC where
student.Sno=SC.Sno and course.Cno=SC.Cno order by student.Sname;

 

优化

sql语句优化

  1. explain 查看是否含有建立索引的语句
  2. mysql> explain select * from test where name='oldboy';在一个语句前面加上explain相当于模拟查询

创建索引

  1. mysql> create index index_name on test(name);
  2. | name| char(20) | NO   | MUL | NULL    |              
  3. mysql> explain select * from test where name='oldboy'\G
  4. *************************** 1. row ***************************
  5.            id: 1
  6.   select_type: SIMPLE
  7.         table: test
  8.          type: ref
  9. possible_keys: index_name
  10.           key: index_name
  11.       key_len: 60
  12.           ref: const
  13.          rows: 1   查询行数,表示当前只查询了1
  14.         Extra: Using where; Using index
  15. 1 row in set (0.00 sec)

原图:

  1. mysql> explain select * from test where name='oldboy'\G
  2. *************************** 1. row ***************************
  3.            id: 1
  4.   select_type: SIMPLE
  5.         table: test
  6.          type: ALL
  7. possible_keys: NULL
  8.           key: NULL
  9.       key_len: NULL
  10.           ref: NULL
  11.          rows: 5
  12.         Extra: Using where
  13. 1 row in set (0.00 sec)
  14.  

帮助

mysql>
help explain  
包含EXPLAIN的用法

 

使用explain命令优化SQL语句(select语句)的基本流程

1、 抓慢查询SQL语法方法

  1. 每隔2,秒输入mysql> SHOW FULL PROCESSLIST; 如果出现2次说明是慢查询
  2. mysql> SHOW  FULL PROCESSLIST;

2、 分析慢查询日志

  1. 配置参数记录慢查询语句
  2. log_query_time = 2
  3. log_queries_not_using_indexes
  4. log-slow-queries = /data/3306/slow.log

3、 对需要建索引的条件列建立索引

大表不能高峰期建立索引,300万条记录(如果访问已经慢了,可以直接创建)

4、 分析慢查询SQL的工具mysqlala(每天早上发邮件)

切割慢查询日志,去重分析后发给大家,如果并发太大可以按小时,去重。

1mv 然后flush进程

2cp复制,然后利用>清空。

3)定时任务

  1. mv /data/3306/slow.log /opt/$(date +%F)_slow.log
  2. mysqladmin -uroot -poldboy -S /data/3306/mysql.sock flush-logs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575982.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器安全之iptables iptables

服务器安全之iptables 感谢老男孩老师为我们讲解iptables 优化之路 iptables防火墙简介 Netfilter/Iptables&#xff08;以下简称Iptables&#xff09;是unix/linux自带的一款优秀且开放源代码的安全自由的**基于包过滤的防火墙工具**&#xff0c;它的功能十分强大&#xff0…

MC新手入门(三十)------ 逻辑运算符和表达式

游戏设计中提供了三种逻辑运算符&#xff1a; 1&#xff09;&& 与运算 2&#xff09;|| 或运算 3&#xff09; &#xff01;非运算 游戏设计中我们常常要用到上面的逻辑运算&#xff0c;例如&#xff1a;当在双人游戏中都要实现两人同时存活才能过关&#xff0c;…

Nagios 配置及监控

Nagios 监控 在互联网日益发展的今天&#xff0c;监控的重要性已经不言而喻。可能打开一个URL要经过6-7层的处理&#xff0c;如果出了问题而没有监控将很难定位到问题所在。那哪些内容需要监控呢&#xff1f; 1.本地资源 (1) 负载&#xff1a;uptime&#xff1b; (2) CPU&…

SSH 配置

SSH 批量管理 SSH介绍 SSH是Secure Shell Protocol的简写&#xff0c;由IETF网络工作小组&#xff08;Network working Group&#xff09;指定&#xff1b;在进行数据传输之前&#xff0c;SSH先对联机数据包通过加密技术进行加密处理&#xff0c;加密后在进行数据传输。确保了传…

服务器重启导致无法启动MySQL

今天服务器受到DDOS攻击&#xff0c;笔者脑残重启了一下服务器。结果造成MySQL服务器无法启动mysql日志见下图。160803 17:43:47 mysqld_safe Starting mysqld daemon with databases from /application/mysql/data160803 17:43:47 [Note] /application/mysql/bin/mysqld (mysq…

架构师之DNS实战

架构师 DNS实战 老男孩教育 DNS简介 1. DNS的出现及演化 网络出现的早起是使用IP地址通讯的&#xff0c;那是就几台主机通讯。但是随着接入网络主机的增多&#xff0c;这种数字标识的地址非常不便于记忆&#xff0c;UNIX上就出现了建立一个叫做hosts的文件&#xff08;Linux和W…

打包jar文件后的spring部署及hibernate自动建表经验总结

楔子 用springhibernate做一个服务器运行程序&#xff0c;在部署到服务器时&#xff08;打包成jar&#xff0c;在window server2008下运行&#xff09;&#xff0c;出现了以下两个纠结问题&#xff1a; 1. 加载不了Spring容器 2. hibernate.hbm2ddl.auto 到了服务器不能自动建表…

我是一个线程 [转]

我是一个线程&#xff0c;我一出生就被编了个号&#xff1a;0x3704&#xff0c;然后被领到一个昏暗的屋子里&#xff0c;在这里我发现了很多和我一模一样的同伴。 我身边的同伴0x6900 待的时间比较长&#xff0c;他带着沧桑的口气对我说&#xff1a;“我们线程的宿命就是处理包…

自动化运维之–Cobbler

Cobbler 自动化 Cobbler简介 Cobbler是一个快速网络安装linux的服务&#xff0c;而且在经过调整也可以支持网络安装windows。该工具使用python开发&#xff0c;小巧轻便&#xff08;才15k行python代码&#xff09;&#xff0c;使用简单的命令即可完成PXE网络安装环境的配置&…

开源jumpserver 堡垒机搭建

一、环境 CentOS 6.x x86_64 mini service iptables stop 关闭SELinux的方法&#xff1a; 修改/etc/selinux/config文件中的SELINUX”” 为 disabled &#xff0c;然后重启。 如果不想重启系统&#xff0c;使用命令setenforce 0 1.指定yum源 wget -O /etc/yum.repos.d/e…

Shell 变量及函数讲解 [2]

Shell 变量的输入 Shell变量除了可以直接赋值或脚本传参外&#xff0c;还可以使用read命令从标准输入获得&#xff0c;read为bash内置命令&#xff0c;可以通过help read查看帮助【语法格式】read [参数] [变量名]【常用参数】-p prompt&#xff1a;设置提示信息-t timeout&…

java大作业私人管家系统_重庆管家婆软件丨管家婆工贸PRO的E-MES管理详解

其实&#xff0c;ERP和MES在制造操作中扮演着独立而又互补的角色。ERP能将企业所有方面的数据进行实时、可用的全面集成&#xff0c;为管理决策提供高效、准确的业务决策支持;MES则能加强MRP计划的执行&#xff0c;把MRP计划同车间作业现场控制通过执行系统联系起来。这些“现场…

监控体系 [精]

监控体系 zabbix 监控对象&#xff1a;     1. 监控对象的理解&#xff1a;CPU是怎么工作的&#xff0c;原理     2. 监控对象的指标&#xff1a;CPU使用率 CPU负载 CPU个数 上下文切换     3. 确定性能基准线&#xff1a;怎么样才算故障&#xff1f;CPU负载多…

vs 设置起始页不见了_发朋友圈屏蔽爸妈,结果不小心设置成了仅家人可见...场面一发不可收拾哈哈哈哈!...

一提到爸妈的朋友圈&#xff0c;就会想到养生鸡汤&#xff0c;中老年流量谣言&#xff0c;土味表情包而出于保护个人隐私拒绝被爸妈误解而遭受灵魂拷问的考虑很多人选择了两全其美的分组法给家人看到阳光可爱正能量的一面沙雕的一面只展现给沙雕网友们可如果不小心把屏蔽的内容…

KVM 安装

KVM介绍 Kernel-based Virtual Machine的简称&#xff0c;是一个开源的系统虚拟化模块&#xff0c;自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理&#xff0c;所以相对于Xen&#xff0c;其核心源码很少。KVM目前已成为学术界的主流VMM之…

彼聆智能语音机器人_电销行业的人工智能:智能语音电话机器人

随着人工智能的发展&#xff0c;越来越多的机器人出现在我们的日常生活中&#xff0c;用于电话营销公司的自动打电话机器人、快递公司用来送快递的机器人、餐厅里用来上菜的机器人&#xff0c;最近更是有一款会后空翻的机器人。机器人正活跃在各行各业中&#xff0c;代替人类去…

Shell 基础介绍 [1]

本文目录1.什么是Shell&#xff1f;2.脚本语言类型3.其他常用的脚本语句种类4.Shell脚本的建立和执行5.Shell 变量类型6.普通变量7.Shell 特殊重要变量8.Shell进程状态变量9.Parameter Expansion10.扩展&#xff1a;其他变量的替换11.变量的数值&#xff08;整数&#xff09;计…

c++创建二叉树_数据结构:查找(4)|| 平衡二叉树

在介绍平衡二叉树之前&#xff0c;应该先了解平衡因子的概念&#xff0c;平衡因子定义为左子树深度减去右子树深度&#xff0c;这个值的绝对值越大&#xff0c;非常容易理解它就对应着越不平衡的情况。一棵平衡的二叉树的平衡因子只能是1&#xff0c;0&#xff0c;-1如何构建一…

华睿相机sdk 开发_索尼发布相机远程操作SDK(软件开发工具包)

索尼从2020年12月9日开始&#xff0c;向开发者免费提供针对索尼数码相机的软件开发工具包“ Camera Remote SDK” 1.03版。“ Camera Remote SDK”开发的软件可以远程更改相机设置、并执行诸如快门释放&#xff0c;实时取景监视(如取景和对焦)之类的操作。支持的操作系统包括Wi…

Linux 字体颜色设置

本文主要介绍Linux 字体颜色的调整&#xff0c;常用于shell脚本当中。我们举一个例子&#xff1a;echo-e"\033[44;37;5m ME \033[0m COOL" 以上命令设置背景成为蓝色&#xff0c;前景白色&#xff0c;闪烁光标&#xff0c;输出字符“ME”&#xff0c;然后重新设置屏幕…