那么如果我只想要数据,而不想要什么sql命令时,应该如何操作呢?

可将查询存储在一个文件中并告诉mysql从文件中读取查询而不是等待键盘输入。可利用外壳程序键入重定向实用程序来完成这项工作。例如,如果在文件my_file.sql 中存放有查

5.4完整备份:

给予mysql的完整恢复,因为bin-log记录着所有的事件的操作,当mysql发生灾难错误时,可以通过bin-log做完整恢复,给予时间点和位置的恢复。例如:每天定义执行一点用mysqldump备份数据库,但是在三点由于数据库出现了故障,数据库无法访问需要恢复,先把数据库恢复到一点的完整备份,在使用mysqlbinlog恢复从一点到mysqldump备份以来的binlog,这样数据库就能恢复到原来的状态

[root@wulaoer ~]# /usr/local/mysql/bin/mysqldump --single-transaction --flush-logs --master-data=2 --all-databases > fullbackup_sunday_11_PM.sql

5.5增量备份数据库

用more查看备份的数据库:

[root@wulaoer ~]# more fullbackup_sunday_11_PM.sql

-- MySQL dump 10.13  Distrib 5.5.44, for Linux (x86_64)

--

-- Host: localhost    Database:

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

-- Server version    5.5.44-cll-lve

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

/*!40101 SET NAMES utf8 */;

/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;

/*!40103 SET TIME_ZONE='+00:00' */;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;

/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;

/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;

/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--

-- Position to start replication or point-in-time recovery from

--

-- CHANGE MASTER TO MASTER_LOG_FILE='mysqld-bin.000006', MASTER_LOG_POS=107;

--

-- Current Database: `mysql`

...............................省略部分................................................

View Code

在上面的信息里可以看到备份后所有的更改都保存在mysqld-bin.000006二进制文件中然后在完全备份的每天执行下面的命令做一次增量备份

[root@localhost ~]# mysqladmin -uroot -p  flush-logs

这是需要把二进制文件保存到一个安全的地方,以方便恢复。

5.6恢复备份:

举例说明:

如果设定了每个星期日早上六点完整备份,每隔一个小时进行一次增量备份,在八点的时候数据库崩溃,这是就需要进行恢复数据库了。先进行完整恢复:

mysql -u root -p < fullbackup_sunday_11_PM.sql

在接 七点、八点的增量备份

[root@wulaoer ~]# /var/lib/mysql/mysqld-bin.000006 mysqld-bin.000007 | mysql -uroot -p

恢复完备份之后,就可以找到最新的增量做最新的完整恢复

mysqlbinlog 后加 --database "具体库" 可恢复具体库的增量信息加 --stop-date="2010-12-20 13:15:00" 可恢复到该日志的具体时间点,如果恢复一个时间段可以--start-date="2010-12-20 13:15:00"--stop-date="2016-1-20 13:15:00"

flush privileges;

6、导入.sql文件命令(例如D:/mysql.sql)

mysql>use wulaoer;

mysql> source /home/wulaoer.sql;

UPDATE以新的值更新现存表中行的列。SET 子句指出要修改哪个列和他们应该给定的值。WHERE子句如果被给出,指定哪个记录行应该被更新。否则,所有的记录行被更新。如果 ORDER BY 子句被指定,记录行将被以指定的次序更新。如果你指定关键词LOW_PRIORITY,UPDATE 的执行将被延迟,直到没有其它的客户端正在读取表。如果你指定关键词IGNORE,该更新语句将不会异常中止,即使在更新过程中出现重复键错误。导致冲突的记录行将不会被更新。如果在一个表达式中从tbl_name 中访问一个列,UPDATE 使用列的当前值。举例来说,下面的语句设置 age 列值为它的当前值加 1 :

mysql> UPDATE persondata SETage=age+1;

UPDATE赋值是从左到右计算的。举例来说,下列语句将 age 列设置为它的两倍,然后再加 1 :

mysql> UPDATE persondata SETage=age*2, age=age+1;

如果你设置列为其当前的值,MySQL 注意到这点,并不更新它。UPDATE返回实际被改变的记录行数目。在 MySQL 3.22 或更新的版本中,C API 函数 mysql_info()返回被匹配并更新的记录行数目,以及在 UPDATE 期间发生的警告的数目。在 MySQL3.23 中,你可以使用 LIMIT # 来确保只有给定的记录行数目被更改。如果一个 ORDER BY 子句被使用(从 MySQL4.0.0 开始支持),记录行将以指定的次序被更新。这实际上只有连同 LIMIT一起才有用。从 MySQL 4.0.4 开始,你也可以执行一个包含多个表的UPDATE 的操作:

UPDATE items,month SETitems.price=month.price

WHERE items.id=month.id;

注意:多表 UPDATE 不可以使用 ORDER BY 或LIMIT。

关键字: mysql

启动:net start mySql;

进入:mysql -u root -p/mysql -hlocalhost -u root -p databaseName;

列出数据库:show databases;

选择数据库:use databaseName;

列出表格:show tables;

显示表格列的属性:show columns fromtableName;

建立数据库:source fileName.txt;

匹配字符:可以用通配符_代表任何一个字符,%代表任何字符串;

7、用文本方式将数据装入数据库表中(例如D:/mysql.txt)

mysql> LOAD DATA LOCAL INFILE/mysql.txt" INTO TABLE MYTABLE;

删除数据库

drop database name 直接删除数据库

mysqladmin drop database name 删除数据库前,有提示

数据库授权

GRANT ALL PRIVILEGES ON bdc.* TObdc@'%' IDENTIFIEDBY 'bdc123' WITH GRANT OPTION;

flush privileges

授权访问bdc 的所有表 用户为bdc 任何主机 ,密码为bdc@123

创建一个用户custom在特定客户端it363.com登录,可访问特定数据库fangchandb

mysql >grant select, insert,update, delete, create,drop on fangchandb.* to custom@it363.com identified by ‘passwd’

删除授权:

mysql> revoke all privilegeson *.* from root@”%”;

mysql> delete from user whereuser=”root” and host=”%”;

mysql> flush privileges;

显示当前mysql版本和当前日期

selectversion(),current_date;

查询时间:select now();

查询当前用户:select user();

查询数据库版本:select version();

查询当前使用的数据库:select database();

查询所有数据表

>show tables;

查询表的字段信息

>desc 表名称;

创建表

create table s_position

(

id int not null auto_increment,

name varchar(20) not nulldefault '经理', #设定默认值

description varchar(100),

primary key PK_positon (id) #设定主键

);

create table department

(

id int not null auto_increment,

name varchar(20) not nulldefault '系统部', #设定默认值

description varchar(100),

primary key PK_department (id) #设定主键

);

create table depart_pos

(

department_id int not null,

position_id int not null,

primary key PK_depart_pos(department_id,position_id) #设定复和主键

);

create table staffer

(

id int not null auto_incrementprimary key, #设定主键

name varchar(20) not nulldefault '无名氏', #设定默认值

department_id int not null,

position_id int not null,

unique (department_id,position_id)#设定唯一值

);

修改结构

mysql>

#表position增加列test

alter tableposition add(test char(10));

#表position修改列test

alter tableposition modify test char(20) not null;

#表position修改列test默认值

alter tableposition alter test set default 'system';

#表position去掉test默认值

alter tableposition alter test drop default;

#表position去掉列test

alter tableposition drop column test;

#表depart_pos删除主键

alter tabledepart_pos drop primary key;

#表depart_pos增加主键

alter tabledepart_pos add primary key PK_depart_pos (department_id,position_id);

View Code

8、操作数据库

#插入表department

insert 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_position

insert into s_position(name,description)values('总监','总监');

insert into s_position(name,description)values('经理','经理');

insert into s_position(name,description)values('普通员工','普通员工');

#插入表depart_pos

insert intodepart_pos(department_id,position_id)

select a.id department_id,b.id postion_id

from department a,s_position b;

#插入表staffer

insert intostaffer(name,department_id,position_id) values('陈达治',1,1);

insert into staffer(name,department_id,position_id)values('李文宾',1,2);

insert intostaffer(name,department_id,position_id) values('马佳',1,3);

insert intostaffer(name,department_id,position_id) values('亢志强',5,1);

insert intostaffer(name,department_id,position_id) values('杨玉茹',4,1);

9、查询及删除操作

#显示系统部的人员和职位

selecta.name,b.name department_name,c.name position_name

from staffera,department b,s_position c

wherea.department_id=b.id and a.position_id=c.id and b.name='系统部';

#显示系统部的人数

select count(*)from staffer a,department b

wherea.department_id=b.id and b.name='系统部'

#显示各部门的人数

select count(*)cou,b.name from staffer a,department b

wherea.department_id=b.idgroup by b.name;

#删除客服部

delete fromdepartment where name='客服部';

#将财务部修改为财务一部

updatedepartment set name='财务一部' wherename='财务部';

10、清空表

mysql>delete from MYTABLE;

11、删除表:

mysql>drop TABLE MYTABLE;

12、添加表字段:

alter tabletable1 add transactor varchar(10) not Null;

alter tabletable1 add id int unsigned not Null auto_increment primary key

修改某个表的字段类型及指定为空或非空

>alter table 表名称 change 字段名称 字段名称 字段类型 [是否允许非空];

>alter table 表名称 modify 字段名称 字段类型 [是否允许非空];

>alter table 表名称 modify 字段名称 字段类型 [是否允许非空];

如果要删除某一字段,可用命令:

ALTER TABLEmytable DROP 字段名;

13、添加唯一键:

ALTER TABLE`test2` ADD UNIQUE ( `userid`)

14、修改主键:

ALTER TABLE`test2` DROP PRIMARY KEY ,ADD PRIMARY KEY ( `id` )

alter tableversion_template drop primary key ,add primary key version,role,type);

15、增加索引

ALTER TABLE`test2` ADD INDEX ( `id` )

alter tabletable1 add index ind_id (id);

create indexind_id on table1 (id);

create uniqueindex ind_id on table1 (id);//建立唯一性索引

16、删除索引:

drop indexidx_id on table1;

alter tabletable1 drop index ind_id;

17、重命名表:

alter table t1 rename t2;

18、增加一个字段:

alter tabletabelName add column fieldName dateType;

19、增加多个字段

alter tabletabelName add column fieldName1 dateType,add columns fieldName2 dateType;

多行命令输入:注意不能将单词断开;当插入或更改数据时,不能将字段的字符串展开到多行里,否则硬回车将被储存到数据中;

增加一个管理员帐户:grant all on *.* to user@localhost identified by"password";

每条语句输入完毕后要在末尾填加分号';',或者填加'\g'也可以;

20、创建临时表:

create temporarytable zengchao(name varchar(10));

21、创建表是先判断表是否存在

create table ifnot exists students(……);

22、从已经有的表中复制表的结构

create tabletable2 select * from table1 where 1<>1;

23、 赋值表

create tabletable2 select * from table1;

24、对表重新命名

alter table table1 rename astable2;

25、修改列的类型

alter table table1 modify id intunsigned;//修改列id的类型为int unsigned

alter table table1 change id sidint unsigned;//修改列id的名字为sid,而且把属性修改为int unsigned

26、联合字符或者多个列(将列id与":"和列name和"="连接)

select concat(id,':',name,'=')from students;

27、limit(选出10到20条)

select * from students order byid limit 9,10;

28、MySQL会使用索引的操作符号

=,>,=,between,in,不带%或者_开头的like

29、存储过程

1)查看存储过程

select name from mysql.proc where db=’数据库名’;

select routine_name frominformation_schema.routines where routine_schema='数据库名';

show procedure status where db='数据库名';

30、MySQL存储过程的修改

ALTER PROCEDURE

更改用CREATEPROCEDURE 建立的预先指定的存储过程,其不会影响相关存储过程或存储功能。

31、MySQL存储过程的删除

删除一个存储过程比较简单,和删除表一样:

DROP PROCEDURE

从MySQL的表格中删除一个或多个存储过程。

32、存储过程基本函数

(1).字符串类

CHARSET(str) //返回字串字符集

CONCAT (string2 [,... ]) //连接字串

INSTR (string ,substring ) //返回substring首次在string中出现的位置,不存在返回0

LCASE (string2 ) //转换成小写

LEFT (string2 ,length ) //从string2中的左边起取length个字符

LENGTH (string ) //string长度

LOAD_FILE (file_name ) //从文件读取内容

LOCATE (substring , string[,start_position ] ) 同INSTR,但可指定开始位置

LPAD (string2 ,length ,pad ) //重复用pad加在string开头,直到字串长度为length

LTRIM (string2 ) //去除前端空格

REPEAT (string2 ,count ) //重复count次

REPLACE (str ,search_str ,replace_str) //在str中用replace_str替换search_str

RPAD (string2 ,length ,pad) //在str后用pad补充,直到长度为length

RTRIM (string2 ) //去除后端空格

STRCMP (string1 ,string2 ) //逐字符比较两字串大小,

SUBSTRING (str , position [,length ]) //从str的position开始,取length个字符,

注:mysql中处理字符串时,默认第一个字符下标为1,即参数position必须大于等于1

mysql> select substring('abcd',0,2);

+-----------------------+

| substring('abcd',0,2) |

+-----------------------+

|                       |

+-----------------------+

1 row in set (0.00 sec)

mysql> select substring('abcd',1,2);

+-----------------------+

| substring('abcd',1,2) |

+-----------------------+

|     ab                |

+-----------------------+

1 row in set (0.02 sec)

TRIM([[BOTH|LEADING|TRAILING] [padding] FROM]string2) //去除指定位置的指定字符

UCASE (string2 ) //转换成大写

RIGHT(string2,length) //取string2最后length个字符

SPACE(count) //生成count个空格

(2).数学类

ABS (number2 ) //绝对值

BIN (decimal_number ) //十进制转二进制

CEILING (number2 ) //向上取整

CONV(number2,from_base,to_base) //进制转换

FLOOR (number2 ) //向下取整

FORMAT (number,decimal_places ) //保留小数位数

HEX (DecimalNumber ) //转十六进制

注:HEX()中可传入字符串,则返回其ASC-11码,如HEX('DEF')返回4142143

也可以传入十进制整数,返回其十六进制编码,如HEX(25)返回19

LEAST (number , number2 [,..]) //求最小值

MOD (numerator ,denominator ) //求余

POWER (number ,power ) //求指数

RAND([seed]) //随机数

ROUND (number [,decimals ]) //四舍五入,decimals为小数位数]

注:返回类型并非均为整数,如:

(1)默认变为整形值

mysql> select round(1.23);

+-------------+

| round(1.23) |

+-------------+

|           1 |

+-------------+

1 row in set (0.00 sec)

mysql> select round(1.56);

+-------------+

| round(1.56) |

+-------------+

|           2 |

+-------------+

1 row in set (0.00 sec)

(2)可以设定小数位数,返回浮点型数据

mysql> select round(1.567,2);

+----------------+

| round(1.567,2) |

+----------------+

|           1.57 |

+----------------+

1 row in set (0.00 sec)

SIGN (number2 ) //

(3).日期时间类

ADDTIME (date2 ,time_interval )//将time_interval加到date2

CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //转换时区

CURRENT_DATE ( ) //当前日期

CURRENT_TIME ( ) //当前时间

CURRENT_TIMESTAMP ( ) //当前时间戳

DATE (datetime ) //返回datetime的日期部分

DATE_ADD (date2 , INTERVAL d_value d_type ) //在date2中加上日期或时间

DATE_FORMAT (datetime ,FormatCodes ) //使用formatcodes格式显示datetime

DATE_SUB (date2 , INTERVAL d_value d_type ) //在date2上减去一个时间

DATEDIFF (date1 ,date2 ) //两个日期差

DAY (date ) //返回日期的天

DAYNAME (date ) //英文星期

DAYOFWEEK (date ) //星期(1-7) ,1为星期天

DAYOFYEAR (date ) //一年中的第几天

EXTRACT (interval_name FROM date ) //从date中提取日期的指定部分

MAKEDATE (year ,day ) //给出年及年中的第几天,生成日期串

MAKETIME (hour ,minute ,second ) //生成时间串

MONTHNAME (date ) //英文月份名

NOW ( ) //当前时间

SEC_TO_TIME (seconds ) //秒数转成时间

STR_TO_DATE (string ,format ) //字串转成时间,以format格式显示

TIMEDIFF (datetime1 ,datetime2 ) //两个时间差

TIME_TO_SEC (time ) //时间转秒数]

WEEK (date_time [,start_of_week ]) //第几周

YEAR (datetime ) //年份

DAYOFMONTH(datetime) //月的第几天

HOUR(datetime) //小时

LAST_DAY(date) //date的月的最后日期

MICROSECOND(datetime) //微秒

MONTH(datetime) //月

MINUTE(datetime) //分返回符号,正负或0

SQRT(number2) //开平方

33、使用索引的缺点

1)  增删改数据的速度;

2)占用磁盘空间;

3)增加查询优化器的负担;

当查询优化器生成执行计划时,会考虑索引,太多的索引会给查询优化器增加

34、分析索引效率

方法:在一般的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的建议;

35、使用较短的定长列

1)尽可能使用较短的数据类型;

2)尽可能使用定长数据类型;

a)用char代替varchar,固定长度的数据处理比变长的快些;

b)对于频繁修改的表,磁盘容易形成碎片,从而影响数据库的整体性能;

c)万一出现数据表崩溃,使用固定长度数据行的表更容易重新构造。使用固定长度的数据行,每个记录的开始位置都是固定记录长度的倍数,可以很容易被检测到,但是使用可变长度的数据行就不一定了;

d)对于MyISAM类型的数据表,虽然转换成固定长度的数据列可以提高性能,但是占据的空间也大;

36、使用not null和enum

尽量将列定义为notnull,这样可使数据的出来更快,所需的空间更少,而且在查询时,MySQL不需要检查是否存在特例,即null值,从而优化查询;

如果一列只含有有限数目的特定值,如性别,是否有效或者入学年份等,在这种情况下应该考虑将其转换为enum列的值,MySQL处理的更快,因为所有的enum值在系统内都是以标识数值来表示的;

37、使用optimize table

对于经常修改的表,容易产生碎片,使在查询数据库时必须读取更多的磁盘块,降低查询性能。具有可变长的表都存在磁盘碎片问题,这个问题对blob数据类型更为突出,因为其尺寸变化非常大。可以通过使用optimize table来整理碎片,保证数据库性能不下降,优化那些受碎片影响的数据表。 optimize table可以用于MyISAM和BDB类型的数据表。实际上任何碎片整理方法都是用mysqldump来转存数据表,然后使用转存后的文件并重新建数据表;

38、使用procedure analyse()

可以使用procedure analyse()显示最佳类型的建议,使用很简单,在select语句后面加上procedureanalyse()就可以了;例如:

select * from students procedureanalyse();

select * from students procedureanalyse(16,256);

第二条语句要求procedure analyse()不要建议含有多于16个值,或者含有多于256字节的enum类型,如果没有限制,输出可能会很长;

39、使用查询缓存

1)查询缓存的工作方式:

第一次执行某条select语句时,服务器记住该查询的文本内容和查询结果,存储在缓存中,下次碰到这个语句时,直接从缓存中返回结果;当更新数据表后,该数据表的任何缓存查询都变成无效的,并且会被丢弃。

2)配置缓存参数:

变量:query_cache_type,查询缓存的操作模式。有3中模式,0:不缓存;1:缓存查询,除非与 select sql_no_cache开头;2:根据需要只缓存那些以select sql_cache开头的查询; query_cache_size:设置查询缓存的最大结果集的大小,比这个值大的不会被缓存。

40、调整硬件

1)在机器上装更多的内存;

2)增加更快的硬盘以减少I/O等待时间;

寻道时间是决定性能的主要因素,逐字地移动磁头是最慢的,一旦磁头定位,从磁道读则很快;

3)在不同的物理硬盘设备上重新分配磁盘活动;

如果可能,应将最繁忙的数据库存放在不同的物理设备上,这跟使用同一物理设备的不同分区是不同的,因为它们将争用相同的物理资源(磁头)。

41、MySQL版本查看:

[root@wulaoer ~]# mysql -V

mysql  Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1

或者

[root@wulaoer ~]# mysql -uroot -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 38

Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> status;

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

mysql  Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1

Connection id:        38

Current database:

Current user:        root@localhost

SSL:            Not in use

Current pager:        stdout

Using outfile:        ''

Using delimiter:    ;

Server version:        5.1.73 Source distribution

Protocol version:    10

Connection:        Localhost via UNIX socket

Server characterset:    latin1

Db     characterset:    latin1

Client characterset:    latin1

Conn.  characterset:    latin1

UNIX socket:        /var/lib/mysql/mysql.sock

Uptime:            2 hours 12 min 50 sec

Threads: 1  Questions: 186  Slow queries: 0  Opens: 28  Flush tables: 1  Open tables: 23  Queries per second avg: 0.23

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

mysql> select version();

+-----------+

| version() |

+-----------+

| 5.1.73    |

+-----------+

1 row in set (0.00 sec)

mysql> select @@version;

+-----------+

| @@version |

+-----------+

| 5.1.73    |

+-----------+

1 row in set (0.00 sec)

View Code

42、二进制日志查看

mysql> show variables like 'log_bin';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| log_bin       | OFF   |

+---------------+-------+

1 row in set (0.00 sec)

开启二进制日志,在windows里my.ini或者linux里my.cnf里,在[mysqld]下加上log-bin=日志名,注{等号后面可以定义二进制日志文件名和位置}。如果只对某个库进行日志文件记录,那么再添加binlog-do-db=test,这样就只记录test数据库的日志,而放弃其他的,而binlog-ignore-db=sales 除sales库不记录,其他都记录。配置文件设置好需要重启一下mysql

mysql> show master status;

+------------+----------+--------------+------------------+

| File       | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------+----------+--------------+------------------+

| log.000001 |      106 |              |                  |

+------------+----------+--------------+------------------+

1 row in set (0.00 sec)

43、mysql日志管理

设置my.cnf中的参数[mysqld]下的expire_logs_day = 天数  。此参数是设置日志的过期天数,过期的日志将会被自动删除,

如果日志长度超过了max_binlog_size = (大小可以带单位,默认k)的上限(默认是1G)也会创建一个新的日志文件

①show variables like 'log_%';查看所有的log命令

②show variables like 'log_bin';查看具体的log命令

删除日志:

mysql> purge master logs to 'mysql-bin.000009' ;

Query OK, 0 rows affected (0.01 sec)

mysql> purge master logs before '2015-0-22 00:00:00′;

Query OK, 0 rows affected (0.05 sec)

RESET MASTER

#删除之前所有的mysqld-bin,并重新生成新的mysqld-bin后缀从000001开始。注:如果您有一个活性的从属服务器,该服务器当前正在读取您正在试图删除的日志之一,则本语句不会起作用,而是会失败,并伴随一个错误。不过,如果从属服务器是休止的,并且您碰巧清理了其想要读取的日志之一,则从属服务器启动后不能复制。当从属服务器正在复制时,本语句可以安全运行。您不需要停止它们。

44、远程使用客户端连接数据库

(1)删除连接的空账户

mysql> delete from mysql.user where user='';

Query OK, 2 rows affected (0.00 sec)

(2)建立客户端连接:

先在防火墙加如一条,防火墙允许3306端口通过,添加后重启防火墙。

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

(3)先看以下mysql的配置文件my.cnf或者my.conf,里面([mysqld])有没有bind_address=127.0.0.1,如果有就注释掉,没有的话就不用操作了,

(4)添加允许连接的IP和帐号密码.

mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";

更多可以参考3、添加用户,这里的用户和密码是客户端连接的用户和密码。

(5)查看连接的客户端

mysql> use mysql;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> select user,host from user;

+------+--------------+

| user | host         |

+------+--------------+

| root | 127.0.0.1    |

| root | 192.168.1.36 |

| root | localhost    |

| root | wulaoer      |

+------+--------------+

4 rows in set (0.00 sec)

(6)删除连接的客户端

关闭远程访问:

mysql> use mysql;

mysql> update user set host = "localhost" where user = "root" and host= "%";

(7)删除连接的IP:

mysql> select user,host from user;

+------+--------------+

| user | host         |

+------+--------------+

| root | 127.0.0.1    |

| root | 192.168.1.36 |

| root | localhost    |

| root | wulaoer      |

+------+--------------+

4 rows in set (0.00 sec)

mysql> DELETE FROM user WHERE  Host="localhost";

Query OK, 1 row affected (0.00 sec)

mysql> select user,host from user;

+------+--------------+

| user | host         |

+------+--------------+

| root | 127.0.0.1    |

| root | 192.168.1.36 |

| root | wulaoer      |

+------+--------------+

3 rows in set (0.00 sec)

45、查看连接MYSQL数据库的IP信息

我们通常情况下要统计数据库的连接数指的是统计总数,没有细分到每个IP上。现在要监控每个IP的连接数,实现方式如下:

方法一:

select SUBSTRING_INDEX(host,':',1) as ip , count(*) from information_schema.processlist group by ip;

方法二:

mysql -u root -h127.0.0.1 -e "show processlist\G;"| egrep "Host\:" | awk -F: '{ print $2 }'| sort | uniq -c

方法三:

mysql -u root -h127.0.0.1 --skip-column-names -e "show processlist;"|awk '{print $3}'|awk -F":" '{print $1}'|sort|uniq –c

以上就是三种监控IP连接数的实现方式,希望对大家的学习有所帮助。

参考网址http://blog.csdn.net/lxh090821/article/details/9410943

操作mysql_MySQL:MySQL的基本操作相关推荐

  1. mysql数据表操作_MySQL数据表基本操作实例详解

    本文实例讲述了MySQL数据表基本操作.分享给大家供大家参考,具体如下: 数据表的基本操作 1.主键约束要求主键列的数据唯一,并且不允许为空.主键能够唯一地识别表中的一条记录,可以结合外键来定义不同数 ...

  2. mysql和python先学哪个_Python数据库操作 初识mysql和mysql基本操作#学习猿地

    # 3.认识和操作一下mysql的基本命令 #### 登录mysql,在终端输入以下命令,进行登录 `mysql -u root -p` ```sql MacBook-Pro:~ yc$ mysql ...

  3. 基于linux操作系统Mysql的基本操作(一)

    基于linux操作系统Mysql的基本操作(一) 背景介绍:mysql软连接的建立,ln –s /usr/local/mysql/bin/mysql  /usr/bin 1.本地登录,命令: #mys ...

  4. [JSP暑假实训] 三.MySQL数据库基本操作及Servlet网站连接显示数据库信息

    本系列文章是作者暑假给学生进行实训分享的笔记,主要介绍MyEclipse环境下JSP网站开发,包括JAVA基础.网页布局.数据库基础.Servlet.前端后台数据库交互.DAO等知识. 前一篇文章讲解 ...

  5. mysql数据库基本操作总结与归纳

    mysql数据库基本操作总结与归纳 登录命令 mysql -u 用户名 -p 密码 列如: [root@localhost ~]# mysql -u root -p [root@localhost ~ ...

  6. Linux如何指向mysql_linux的基本操作(mysql 的基本操作)

    Mysql 的基本操作 在前面两个章节中已经介绍过MySQL的安装了,但是光会安装还不够,还需要会一些基本的相关操作.当然了,关于MySQL的内容也是非常多的,只不过对于linux系统管理员来讲,一些 ...

  7. php对mysql基础操作_php+mysql的基础操作

    标签: PHP可以说是当下很火的一门后端语言了,它小巧玲珑,和html等前端语言配合的可以说是天衣无缝,加之xampp,wampp等工具的出现,更是前端开发者的福音,作为一名前端ER,如果不熟悉一门后 ...

  8. 1Python全栈之路系列之MySQL数据库基本操作

    Python全栈之路系列之MySQL数据库基本操作 MySQL数据库介绍 MySQL是一种快速易用的关系型数据库管理系统(RDBMS),很多企业都在使用它来构建自己的数据库. MySQL由一家瑞典公司 ...

  9. Linux安装卸载Mysql与基本操作

    一.安装Mysql软件 1.下载rpm包 本文章使用的系统是Linux,所以你需要下载一个mysql的rpm包 https://dev.mysql.com/downloads/ 根据系统版本下载,Ce ...

  10. Mysql的基本操作和注意点

    Mysql数据库基本操作 Mysql第一阶段: 第一阶段对于新手来说,主要是熟悉mysql中的语句有什么作用,这段时间主要在文本框中敲打mysql语句,然后在MySQL的运行框中运行,以此来检查自己所 ...

最新文章

  1. The evolution of cluster scheduler architectures--转
  2. Solaris中创建磁盘集报”rpc.metad:Permission denied”错误
  3. Tesseract入门-VS2015下调用Tesseract4.0 +win7 64位系统
  4. 性能优化 = 改改代码?
  5. linux中查找文件属于那个软件包的方法
  6. Linux进程全解4——fork创建子进程
  7. 移动端页面按手机屏幕分辨率自动缩放的js
  8. Python3 使用requests请求,解码时出错:'utf8' codec can't decode byte 0x8b in position 1: invalid start byte...
  9. 45个经典蓝屏案例一一破解
  10. c语言程序中如何用超链接,使用id引用超链接
  11. php 易宝支付,易宝支付
  12. UE4_虚幻引擎4多人联机基础知识和客户端服务器通信机制详解
  13. JAVA 获取mac地址
  14. 并行程序设计导论 概念总结
  15. 如何解包编译重新打包boot.img System.img(转自百度文库)
  16. aiml的中文适配aiml_cn
  17. c#的decode用法
  18. STM32__04—PMW呼吸灯
  19. 如何换ionic里面的图标
  20. 如何分析夹杂在金属液中的微小气泡

热门文章

  1. python 数据可视化- 地图
  2. 十大炫酷鼠标点击效果和页面
  3. 高频交易和量化交易有什么区别?
  4. chrony配置服务器时间同步
  5. 智能安全的“攻与防之歌”——极智汇,即将登陆首都
  6. c语言 指针溢出,[转载]C语言防止缓冲区溢出方法
  7. mysql分库分表 tddl_TDDL分库分表规则
  8. Watij,配合JRuby 截取网易公开课下载列表
  9. 数据结构之冒泡排序(Java)
  10. Python学习笔记——爬虫之urllib数据抓取