启动原理

mysqld脚本-->mysqld_safe脚本-->mysqld服务-->启动mysql

强制关闭mysql: 三种方法, 不建议用!

killall mysqld

pkill mysqld

killall -9 mysqld

优雅关闭mysql: 三种方法

mysqladmin -uroot -pabc123 shutdown

/etc/init.d/mysqld stop

kill -USR2 `cat path/pid`

登录

mysql -uroot -p

强制不记录linux敏感历史记录

HISTCONTROL=ignorespace

修改mysql命令提示符

prompt \u@foo \r:\m:\s->

多实例远程连接

mysql -uroot -p -h 127.0.0.1 -P3307

修改mysql密码

mysql> update mysql.user set Password=password(123456) where User='root' and Host='localhost';

mysql> flush privileges;

找回丢失的密码:

/etc/init.d/mysqld stop

mysqld_safe --skip-grant-tables --user=mysql &

mysql #重新开启一个命令窗口

mysql> use `mysql`;

mysql> select User,Password from user;

mysql> update user set Password=password(123456) where User='root' and Host='localhost';

mysql> flush privileges;

mysqladmin -uroot -p123456 shutdown

/etc/init.d/mysqld start

多实例找回丢失的密码

killall mysqld

mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-tables &

mysql -uroot -p -S /data/3306/mysql.sock  //用空密码进入后,修改密码的方法同上

SQL分类

数据查询语言: DQL  where, order by, group by, having

事务处理语言: TPL  transaction, commit,  rollback

指针控制语言: CCL  declare cursor, fetch into

数据控制语言: DCL  grant invoke

数据定义语言: DDL  create, alter, drop

数据操作语言: DML  select, insert, delete, update

创建utf8数据库

mysql> CREATE DATABASE oldboy DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

mysql> show create database oldboy \G;

查询其余信息

mysql> select version();

mysql> select user();

mysql> select now();

删除多余的mysql用户

mysql> drop user 'aa'@'localhost';

创建用户并授权

mysql> create user 'aa'@'localhost' identified by 'mypass'; //普通用户,没有授权

mysql> grant all on test.* to 'aa'@'localhost' identified by 'mypass'; //创建了并授权

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

mysql> grant all on test.* to 'aa'@'10.0.0.%' identified by 'mypass';     //ip地址也可以是: 10.0.0.0/255.255.255.0

mysql -uaa -pmypass -h 10.0.0.5

定制mysql用户的权限列表

mysql> grant all on test.* to 'aa'@'localhost' identified by 'mypass';

mysql> flush privileges;

mysql> show grants for aa@localhost;

mysql> revoke insert on test.* from aa@localhost; //不能是*.*  这句命令的意思是回收insert权限

mysql> flush privileges;

mysql> show grants for aa@localhost;

mysql权限有这些: 加用户时, 应该以满足业务需求为基础, 授予最小权限

SELECT

UPDATE

INSERT

DELETE

CREATE

DROP

REFERENCES

INDEX

ALTER

CREATE TEMPORARY TABLES

LOCK TABLES

EXECUTE

CREATE VIEW

SHOW VIEW

CREATE ROUTINE

ALTER ROUTINE

EVENT

TRIGGER ON

企业生产环境应该如何授权

1.博客/CMS:

select/insert/update/delete 4个权限就够了, 有可能还需要create/drop权限(等待创建数据库完毕后,要回收这两个权限)

2.主从库的用户权限:待...

mysql5.5以后的建表时的默认引擎是InnoDB

查询表结构

mysql> USE mysql;

mysql> DESC mysql;

mysql> SHOW CREATE TABLE `user`\G;

索引

1.id是主键索引  name是普通索引

mysql> CREATE TABLE `te` (

`id`  int(4) NOT NULL AUTO_INCREMENT ,

`name`  char(10) NOT NULL ,

PRIMARY KEY (`id`),

INDEX `index_name` (`name`)

);

mysql> DROP INDEX index_name ON te;

2.对字段的的前n个字符建立索引

mysql> CREATE INDEX index_name ON te(`name`(5));

mysql> show index from te\G;

3.联合索引: 按条件列查询时, 是有前缀生效特性的: 即 a、ab、abc 三种查询时可以走索引

mysql> CREATE TABLE `te` (

`id`  int(4) NOT NULL AUTO_INCREMENT ,

`a` char(5) NOT NULL,

`b` char(5) NOT NULL,

`c` char(5) NOT NULL,

PRIMARY KEY (`id`),

KEY `index_a_b_c` (`a`(3),`b`,`c`)

);

4.唯一索引

mysql> CREATE UNIQUE INDEX index_name ON te(`name`);

5.建立索引的原则

a.不能给所有列建立索引: 写频繁,读取少,的业务要少建立索引

b.在哪些列建立索引: 创建在where后的条件列上; 创建在唯一值多的大表上

6.查看语句执行计划: explain

防止误更新数据

登录时, 加上 -U 参数 (update时如果没有where条件, 会拒绝操作)

防止误删除数据: 必须带where条件

truncate/delete命令, truncate速度快(它是清除物理文件,而delete是一行行的删除rows)

重命名某个表

mysql> RENAME TABLE te to test1;

;

mysql系列之3.mysql进阶的更多相关文章

  1. mysql系列之6.mysql主从同步

    普通文件的数据同步 nfs: 网络文件共享 samba: 共享数据 定时任务或守护进程结合 rsync.scp inotify(sersync)+rsync 触发式实时数据同步 ftp数据同步 ssh ...

  2. mysql系列之2.mysql多实例

    使用场景 资金紧张; 并发访问不大; 门户网站; 实现 生产硬件配置: mem 32G / 双cpu 8核 / 磁盘6*600G sas 15k, 2-3个实例 安装组件 #yum install n ...

  3. mysql系列之4.mysql字符集

    针对mysql语句的临时办法: 先查看下mysql的各种编码设置情况, 如果结果显示有几项的编码不一致, 请先调整linux的系统编码 mysql> show variables like 'c ...

  4. mysql系列十一、mysql优化笔记:表设计、sql优化、配置优化

    可以从这些方面进行优化: 数据库(表)设计合理 SQL语句优化 数据库配置优化 系统层.硬件层优化 数据库设计 关系数据库三范式 1NF:字段不可分; 2NF:有主键,非主键字段依赖主键; 3NF:非 ...

  5. mysql系列十、mysql索引结构的实现B+树/B-树原理

    一.MySQL索引原理 1.索引背景 生活中随处可见索引的例子,如火车站的车次表.图书的目录等.它们的原理都是一样的,通过不断的缩小想要获得数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的 ...

  6. mysql系列九、mysql语句执行过程及运行原理(分组查询和关联查询原理)

    一.背景介绍 了解一个sql语句的执行过程,了解一部分都做了什么,更有利于对sql进行优化,因为你知道它的每一个连接.where.分组.子查询是怎么运行的,都干了什么,才会知道怎么写是不合理的. 大致 ...

  7. mysql系列八、mysql数据库优化、慢查询优化、执行计划分析

    mysql的性能优化无法一蹴而就,必须一步一步慢慢来,从各个方面进行优化,最终性能就会有大的提升. 一.介绍 对mysql优化是一个综合性的技术,主要包括 表的设计合理化(符合3NF) 添加适当索引( ...

  8. mysql系列七、mysql索引优化、搜索引擎选择

    一.建立适当的索引 说起提高数据库性能,索引是最物美价廉的东西了.不用加内存,不用改程序,不用调sql,只要执行个正确的'create index',查询速度就可能提高百倍千倍,这可真有诱惑力.可是天 ...

  9. mysql系列六、mysql创建用户、授权、备份及恢复命令

    一.创建用户和授权 下面的操作中,其中someusername为用户名,somepassword为密码,somedbname为数据库名 1.创建用户 create user 'someusername ...

随机推荐

  1. Machine Learning Done Wrong【转】

    1. Take default loss function for granted Many practitioners train and pick the best model using the ...

  2. Loj #124. 除数函数求和

    链接:https://loj.ac/problem/124 就是筛一下积性函数. #include<bits/stdc++.h> #define ll long long #define ...

  3. mysql之日期函数

    写在前面 mysql的学习,断断续续,今天就接着学习mysql的日期操作吧. 系列文章 mysql之创建数据库,创建数据表 mysql之select,insert,delete,update mysq ...

  4. ScutSDK 0.9版本发布

    ScutSDK简介: ScutSDK是和Scut游戏服务器引擎,简化客户端开发的配套SDK,她彻底打通了Scut开源游戏服务器引擎与客户端引擎(如Cocos2d-x/Quick-x/Unity3D)项 ...

  5. 最好PHP开发工具Zend Studio 9.0.2的安装和使用

    摘要:Zend Studio是Zend Technologies开发的PHP语言集成开发环境(IDE),是公认最好的PHP开发工具.在5.5系列后,官方推出的Zend Studio都利用了Eclips ...

  6. HDU4004

    题目大意,有一条长度为L和河流,中间穿插n个石凳,青蛙跳m次经过石凳后到达对岸,求青蛙每次跳跃的最大距离的最小值 本题数据量大n<500000,显然简单的o(n*n)算法是通过不了的,在输入大量 ...

  7. #pragma预处理命令【转】

    原文 : http://www.cnblogs.com/qinfengxiaoyue/archive/2012/06/05/2535524.html #pragma可以说是C++中最复杂的预处理指令了 ...

  8. OpenCV头文件包含问题

    opencv从2.2版本以后<opencv root>include下有两个文件夹 opencv 和opencv2.从官方的意思来看,它逐渐喜欢用opencv2里面的那种包含头文件的方式. ...

  9. df、du、fdisk:Linux磁盘管理

    磁盘是Linux系统中一项非常重要的资源,如何对其进行有效的管理直接关系到整个系统的性能问题.对Linux磁盘管理稍微有一些学习和经验的朋 友们应该都知道df.du和fdisk这三个常用命令:df用于 ...

  10. 深入浅出AOP(四)--AOP的实现步骤

    AOP是什么?有什么用处?怎么实现?在前面的博客中已经写的非常具体了,那么我们怎么一步一步考虑的呢? 在最初的时候,我们知道AOP是一个拦截业务.提供服务的东西.于是我们是这样做的: 后来又了加上了S ...