mysql系列之3.mysql进阶
启动原理
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进阶的更多相关文章
- mysql系列之6.mysql主从同步
普通文件的数据同步 nfs: 网络文件共享 samba: 共享数据 定时任务或守护进程结合 rsync.scp inotify(sersync)+rsync 触发式实时数据同步 ftp数据同步 ssh ...
- mysql系列之2.mysql多实例
使用场景 资金紧张; 并发访问不大; 门户网站; 实现 生产硬件配置: mem 32G / 双cpu 8核 / 磁盘6*600G sas 15k, 2-3个实例 安装组件 #yum install n ...
- mysql系列之4.mysql字符集
针对mysql语句的临时办法: 先查看下mysql的各种编码设置情况, 如果结果显示有几项的编码不一致, 请先调整linux的系统编码 mysql> show variables like 'c ...
- mysql系列十一、mysql优化笔记:表设计、sql优化、配置优化
可以从这些方面进行优化: 数据库(表)设计合理 SQL语句优化 数据库配置优化 系统层.硬件层优化 数据库设计 关系数据库三范式 1NF:字段不可分; 2NF:有主键,非主键字段依赖主键; 3NF:非 ...
- mysql系列十、mysql索引结构的实现B+树/B-树原理
一.MySQL索引原理 1.索引背景 生活中随处可见索引的例子,如火车站的车次表.图书的目录等.它们的原理都是一样的,通过不断的缩小想要获得数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的 ...
- mysql系列九、mysql语句执行过程及运行原理(分组查询和关联查询原理)
一.背景介绍 了解一个sql语句的执行过程,了解一部分都做了什么,更有利于对sql进行优化,因为你知道它的每一个连接.where.分组.子查询是怎么运行的,都干了什么,才会知道怎么写是不合理的. 大致 ...
- mysql系列八、mysql数据库优化、慢查询优化、执行计划分析
mysql的性能优化无法一蹴而就,必须一步一步慢慢来,从各个方面进行优化,最终性能就会有大的提升. 一.介绍 对mysql优化是一个综合性的技术,主要包括 表的设计合理化(符合3NF) 添加适当索引( ...
- mysql系列七、mysql索引优化、搜索引擎选择
一.建立适当的索引 说起提高数据库性能,索引是最物美价廉的东西了.不用加内存,不用改程序,不用调sql,只要执行个正确的'create index',查询速度就可能提高百倍千倍,这可真有诱惑力.可是天 ...
- mysql系列六、mysql创建用户、授权、备份及恢复命令
一.创建用户和授权 下面的操作中,其中someusername为用户名,somepassword为密码,somedbname为数据库名 1.创建用户 create user 'someusername ...
随机推荐
- Machine Learning Done Wrong【转】
1. Take default loss function for granted Many practitioners train and pick the best model using the ...
- Loj #124. 除数函数求和
链接:https://loj.ac/problem/124 就是筛一下积性函数. #include<bits/stdc++.h> #define ll long long #define ...
- mysql之日期函数
写在前面 mysql的学习,断断续续,今天就接着学习mysql的日期操作吧. 系列文章 mysql之创建数据库,创建数据表 mysql之select,insert,delete,update mysq ...
- ScutSDK 0.9版本发布
ScutSDK简介: ScutSDK是和Scut游戏服务器引擎,简化客户端开发的配套SDK,她彻底打通了Scut开源游戏服务器引擎与客户端引擎(如Cocos2d-x/Quick-x/Unity3D)项 ...
- 最好PHP开发工具Zend Studio 9.0.2的安装和使用
摘要:Zend Studio是Zend Technologies开发的PHP语言集成开发环境(IDE),是公认最好的PHP开发工具.在5.5系列后,官方推出的Zend Studio都利用了Eclips ...
- HDU4004
题目大意,有一条长度为L和河流,中间穿插n个石凳,青蛙跳m次经过石凳后到达对岸,求青蛙每次跳跃的最大距离的最小值 本题数据量大n<500000,显然简单的o(n*n)算法是通过不了的,在输入大量 ...
- #pragma预处理命令【转】
原文 : http://www.cnblogs.com/qinfengxiaoyue/archive/2012/06/05/2535524.html #pragma可以说是C++中最复杂的预处理指令了 ...
- OpenCV头文件包含问题
opencv从2.2版本以后<opencv root>include下有两个文件夹 opencv 和opencv2.从官方的意思来看,它逐渐喜欢用opencv2里面的那种包含头文件的方式. ...
- df、du、fdisk:Linux磁盘管理
磁盘是Linux系统中一项非常重要的资源,如何对其进行有效的管理直接关系到整个系统的性能问题.对Linux磁盘管理稍微有一些学习和经验的朋 友们应该都知道df.du和fdisk这三个常用命令:df用于 ...
- 深入浅出AOP(四)--AOP的实现步骤
AOP是什么?有什么用处?怎么实现?在前面的博客中已经写的非常具体了,那么我们怎么一步一步考虑的呢? 在最初的时候,我们知道AOP是一个拦截业务.提供服务的东西.于是我们是这样做的: 后来又了加上了S ...