启动原理

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. MAC(Linux)升级Openssl

    系统上一般默认安装的是0.9.8版本的Openssl,不能满足需要.这时候就要重新安装Openssl. 上官网下载新版openssl:https://www.openssl.org/source/ 解 ...

  2. JetBrains软件开发框架下的类似于“.IntelliJIdea2018.1”的配置文件夹的移动

    JetBrains软件开发框架下几款软件,如: 会在C盘用户文件夹下生成很大的配置文件夹(IDE config folder),十分占空间,也影响电脑性能. 这些索引目录移动的原理相似,现在以Idea ...

  3. Linux基础学习4

    SUDO sudo 执行的重点是:『 能否使用 sudo 必须要看 /etc/sudoers 的设定值, 而可使用 sudo者是透过输入用户自己的密码来执行后续的指令串』由于能否使用与/etc/sud ...

  4. ios修改hosts文件后访问网址114导航域名无法解析问题

    当前的问题是打开hosts文件转换成utf8格式浏览发现前面有@之类的非法字符,手动修改后可以访问.

  5. numpy基础语法

    np.zeros(5) [ 0.  0.  0.  0.  0.] 所得类型为数组, numpy.zeros_like(a, dtype=None, order='K', subok=True) 生成 ...

  6. curl的用法

    1.官网:https://curl.haxx.se/ 2.版本安全漏洞:https://curl.haxx.se/docs/security.html 3.github:https://github. ...

  7. EasyMvc入门教程-基本控件说明(2)定时器

    我们有时候希望系统能自动刷新后台数据或者做某个动作,那么定时器的作用就体现出来了. EasyMvc默认提供的服务器可以定时调前端方法与定时调后端方法,先看例子: 定时调客户端事件 实现代码: @Htm ...

  8. 一张图,关于 Bayes error rate,贝叶斯错误率等的分析

    造轮子是那帮搞研究的“科学家”干的事情(类似E&E里的explore),“工程师”的职责是利用已有的东西解决问题(类似E&E里的exploit). 其次,即使以工程师的角色解决业务问题 ...

  9. 【ActionScript】Flash与网页的交互,ActionScript与JavaScript的交互

    Flash是可以轻松与网页交互数据的,不然为何Flash会有这么大的生命力呢?仅仅是这样编程比較麻烦而已,又要调试Flash,然后又要放到server上调试. 只是这种方式可以收到非常好的效果.Fla ...

  10. JAVA Eclipse创建Android程序界面不显示怎么办

    一般是由于你创建的Android应用程序版本太高导致的,请设置4或以下版本,对于已有的项目,可以在属性-Android中修改目标生成的版本号                               ...