一. MySQL常用命令
-------------------------------------
1.查看命令帮助信息:
mysql> help user;
2.创建一个与root权限相等的账号:
mysql> grant all privileges on *.* to system@'localhost' identified by 'Root123' with grant option;
3.创建管理员密码:
mysqladmin -u root password 'Root123'
4.修改管理员密码(两种方法):
mysqladmin -u root -p'Root123' password 'Root1234'
mysql> update mysql.user set password=PASSWORD("Root1234") where user='root' and host='localhost';
5.Root密码丢失以后设置无密码登陆数据库:
mysqld_safe --defaults-file=/data/3308/my.cnf --skip-grant-tables & (多实例,skip参数要放后面)
mysqld_safe --skip-grant-tables --user-mysql & (单实例)
6.SQL语句分类:
DDL: create alter drop
DCL: grant revoke commit rollback
DML: select insert delete update
7.创建数据库相关:
mysql> create database wmj;
mysql> show databases like '%wmj%';
mysql> show create database wmj;
8.删除数据库:
mysql> drop database wmj;
9.连接数据库:
mysql> use wmj123;
10.创建用户:
mysql> grant all on wmj.* to wmj1234@'172.16.1.%' identified by 'Root12345';
mysql> flush privileges;
11.查看USER表结构:
mysql> desc user;
12.创建数据表:
mysql> create table student (
id int(4) not null,
name char(20) not null );
13.查看建表的语句:
mysql> show create table student;
14.插入数据:
mysql> insert into student(id,name,age) values(2,'wmj123',21);
15.修改数据:
mysql> update student set name="wmj234" where id=3;
16.删除数据:
mysql> delete from student where id =3;
17.新增字段:
mysql> alter table student add sex char(4) default "2250" after name;
#在student表中创建sex列默认填入"2250",放在name后面:
18.删除字段:
mysql> alter table student drop sex ; #删除student表中的sex列:
19.修改表名称:
mysql> rename table test to wmj;
20.删除表:
mysql> drop table wmj;
21.开启查询日志输出(不重启修改mysql配置参数):
mysql> set global general_log = on;
二. MySQL索引相关
-------------------------------------
1.索引的分类:要在where后面的条件列上创建索引。
a.主键索引(primary key)
b.普通索引(index)
c.联合索引
2.为name列创建索引:
mysql> alter table student add index index_dept(name); #index_dept为索引名称
3.删除索引:
mysql> alter table student drop index index_dept;
mysql> drop index index_name on student;
4.为name列的前8个字符创建索引:
mysql> create index index_name on student(name(8))
5.为name和age列创建联合索引:
mysql> create index index_name_age on student(name,age);
6.为id列创建唯一索引:
mysql> create unique index index_id on student(id);
7.查看查询语句是否使用了索引:
mysql> explain select * from student where name = "wmj"\G;
8.explain优化sql语句流程:
a.通过 show full processlist 查看慢查询语句。
b.分析慢查询日志:
long_query_time = 1 #超过1秒记录
log-slow-queries = /data/3306/slow.log
log_queries_not_using_indexes #没有使用索引的记录
c.使用explain语句分析 或者使用 mysqlsla工具分析。(每天早晨发邮件)
d.对需要建索引的列建立索引。
三. MySQL乱码相关
-------------------------------------
1.查看各环境字符集:mysql> show variables like "character_set%";
2.修改连接客户端字符集:
mysql> set names utf8;
3.修复服务端的字符集:
character-set-server=utf8 #配置文件mysqld里面加
4.查看支持哪些字符集:
mysql> show character set;
5.更改表的字符集:
mysql> alter table student character set = utf8;
6.生成环境修改数据库的字符集:
a.用mysqldump将表结构导出,在导出表数据。
b.使用sed命令修改导出表结构文件里面的utf8为gbk。
c.在mysql把表结构还原,在还原数据。
四. MySQL二进制日志相关
-------------------------------------
1.查看bin_log是否打开:
mysql> show variables like '%log_bin%';
2.临时停止bin_log记录:
mysql> set session sql_log_bin = off ;
3.bin_log记录的三种模式:
a.row level :行级记录 |记录仔细,性能不佳
b.statement level :语句记录 |提高IO,记录较粗,特殊功能可能无法同步 (默认)
c.Mixed :智能记录 | 两者之间,有存储过程和触发器较多的话可以选择
4.查看bin_log模式配置:
mysql> show variables like "binlog%";
5.修改bin_log记录模式:
mysql> set session binlog_format = 'row';