Mysql的原理,安装和基本使用
mysql执行流程:
mysql是一个单进程的服务,对于每一个请求都是用线程来响应的,这就需要一个连接器来处理新用户的请求,响应,销毁
1.客户端请求,服务器端(连接器)开辟线程响应用户
2.用户发起SQL语句查询数据库
3.查询缓存:记录用户的SQL查询语句,如果再次查询同样内容,就返回缓存
4.如果缓存没有进入分析器:(分析器也可能借签缓存)
语法分析器:用户命令语法是否正确
词法分析器:将用户的命令进行切片,一个词一个词用空格隔开,获得用户要查询的表,内容,用户的权限等
5.优化:执行路径的选择,生成执行树
每个SQL语句都有很多执行路径,优化的目的就是在这些执行路径里选择一个最优的执行路径
6.存储引擎:用于管理存储在文件系统,甚至是裸设备上的数据管理程序,它本身给上层应用提供不同的管理,有的支持事务,有的不支持事务。
#查询缓存可以大大加速这个过程,不过缓存本身可能带来劣势,假如一个用户要查询一个数据,正好缓存里有,而在之前,这条数据刚刚被修改过那么返回的缓存结果就是过时的。
MYSQL的结构:
客户端:mysql
连接器:
NativeC API 本地C语言接口
JDBCJAVA的数据库连接器
ODBC开放式数据库互联,非常底层
ORACLE,SOLServer都支持
连接池(conetcionpool):它的后方是MYSQL的真正功能
SQL接口:用户通过sql客户端发过来的命令,由sql接口接收
DML数据操作语言:查询,修改,升级数据等
DDL数据定义语言:创建一个新的数据库,新的索引,删除一个用户等
存储过程视图触发器
Parser:分析器
查询 事务 对象权限
optimizer:访问路径
生成执行树
caches&buffers:缓存和缓存
优化里最重要的是缓存的优化
pluggablestroage engines存储引擎(插件式):将逻辑结构转换为物理结构的程序
ManagementServices & Utilites工具:备份,恢复,安全,移植,集群等,这些工具一般和文件系统打交道,不需要和mysql-server打交道,它们对应的都是命令。
数据库对象:(逻辑)
表,二维关系
索引
视图
触发器
存储过程
存储函数
事件調读器
游标
用户
物理
文件
将数据库对象和物理对象对应起来就是存储引擎
Mysql
*插件式的存储引擎
mysql与mysql的连接方式:tcp,socket,pipe,memory
mysql的交互方式:interact batch
SQL
结构化查询语言
bash
select,update,create,drop
Mysql安装
版本选择:
GA
RC
beta
alpha
在以后的使用过程中,RPM包很方便,但是会带来各种问题,所以尽量使用编译安装甚至是LFS
Mysql-client
Mysql-devel:编译安装软件包,需要用到Mysql的时候才安装这个软件包
Mysql-embedded: mysq嵌入式
Mysql-ndb-management
Mysql-server
Mysql-shared:可能被客户端或者服务器端的某些工具用到
Mysql-shared-compat
Mysql-test:测试Mysql,提供测试组件
一般来讲,完全的MYSQL只需要安装clientdevel share server
安装目录的作用
bin
data默认情况下将数据和索引存放的目录
inclued
lib
man
mysql-test
scripts安装时的初始化脚本
share某种特定语言的错误信息的,信息原始文件存放
sql-bench压力测试工具
support-file提供一些初始化的文件和脚本
mysql的配置文件
mysql Linux启动时读取配置文件的次序
/etc/my.cnf
/etc/mysql/my.cnf
$MYSQL_HOME/my.cnf
/path/to/filewhen default-extra-file=/path/to/file is speicified
~/my.cnf
原则:
*当前面的配置文件找不到,将按顺序读取下面的
*当多个配置文件中的选项不一样,那么,以他们的和为准
*如果有冲突的话以最后一个生效的为准
*MYSQL_HOME数据没有设定的话,会设定到basedirectory,即Mysql的数据目录中
WINDOWS的启动次序
安装完成后,Mysql的动作
生成3个管理员帐号
root@127.0.0.1@localhost @hostname
1个匿名帐号
anonymous@locahost @hostname
数据库对象
表,二维关系
表的结构
DESCuser;查看表的结构
SELECTHost,User,PasswordFROM user;从user表里只查看三个字段
SELECT* FROM user\G;查看所有的表内容
对mysql来讲,使用主机名和IP地址是完全不同的类型,都需要配置密码
root用户对mysql具有一切权限
安装后第一步:
对管理员设置密码
第一种方式:
#mysqladmin-u root password 'new-password';
#mysqladmin-u root -h localhost password 'new-password';
mysql的选项可以不带空格,有时候带空格是错的
第二种:setpassword forroot@locahost=PASSWORED('');
第三种:updateuser set password=password('new-password') where user='root' andhost='127.0.0.1';
#第二个password是一个函数,表示加密存放
#每一次修改密码后,都应该执行
#flushprivileges
#通知mysql加载新密码
删除匿名用户
DROPUSER ‘’@localhost;
DROPUSER root@::1;
flushprivileges;
如何访问mysql
服务器端:mysql-server :3306
mysql-server可以工作在其他端口,这样可以启用两个mysql-server,但是用到的很少
客户端:mysql
连接远程mysql-server
mysql-uroot -h172.16.100.1 -predhat
#如果连接不上,需要给远程用户授权
grantall privileges on *.* to root@'%' identified by 'redhat'
flushprivileges;
mysql工具
mysql
mysqladmin
mysqlshow
他们的通用选项
和用户相关
--user = -u
--password = -p
和主机相关
--protocol指定协议
--host = -h指定连接到哪个服务器
--port服务器的端口
--socket指定socket文件在哪
--shared-memory-bash-name
--protocol可以接受的选项
tcp只要客户端和服务器端不在同一台主机,必然是tcp
客户端和服务端在一台主机上,基于内存,命令管道
soket unix linux
pipe windows
memory windows
--Ddb_name指定连接后设定某个数据库为默认数据库使用
--databasedb_name
selectdababase();显示当前默认数据库是谁
selectuser();显示当前用户身份
其他相关选项
不需要输入帐号密码登录
cd~
vim.my.cnf #放在启动读取的配置文件位置
[client]
user=root
password=redhat
mysql的使用方式:
交互式模式:即Mysql命令行
mysql>提示符,表示mysql的命令可以在此输入并送到服务器端执行
; 结束符 每一个语句需要一个结束符,默认是;告诉mysql服务器这个语句结束了
有些语句不需要;这些语句都是在客户端执行的,例如
usermysql
selectdatabase()
STATS
->续行符
'>
''>
`>
/*>
#helpshow;查看帮助信息
批处理模式:mysql脚本.sql
#编辑一个sql脚本文件
vimtest.sql
CREATEDATABASE mydb;
CREATEDATABASE dean;
#如何执行,使用输入重定向的方式执行
mysql-uroot -p < test.sql
或者在Mysql的交互式里面使用souce命令
>SOURCE/root/test.sql
mysql客户端工具使用:
\h帮助信息
exit \q退出此客户端
mysql可以保存用户的命令历史在内存中,甚至在用户的家目录生成一个文件.mysql_histroy来保存命令记录
快捷键
ctrl-w删除光标前的单词,可以用ctrl+y粘贴出来删除的内容
ctrl+y粘贴
ctrl+d删除一个字符
ctrl+a移到行首
ctrl+e移到行尾
tab键可以命令补全,但是有些安装版本把该功能禁用了,主要原因是为了节省资源。
\#对于新生成的数据库对象支持补全功能。
或者使用rehash命令
\c取消已经写好的命令
\d更换行结束符 ,例如:
\d// 表示结束符换为//
\g表示忽略默认定义的结束符而直接送往服务器端执行
\G以列的方式显示每一行(竖排显示,这样如果一行内容很多就会显示的很有条理)
-E或者--vertical
明确要求竖排显示
mysql客户端命令和SQL语句
HELPkeyword可以查看对应命令的语法结构 例如helpselect
-e选项,不用连上数据库服务器直接提交命令,并退出回到bash
mysql-e “SHOW DATABASES”
mysql-e “SHOW DATABASES\G”
#支持各种mysql命令
#mysql.user需要指定对应的数据库,否则会报错
mysql-e “SELECT User,Host,Password FROM mysql.user”
和mysql数据库相关的管理工作-----mysqladmin
在客户端执行一些管理工作
#它也可以使用.my.cnf里的帐号和密码
systax:
mysqladmin[option] command [arg] [command][arg]
mysqladminping
mysqladminping -h 172.16.199.2
它的相关command
create创建数据库
#mysqladmin create sampledb
drop删除数据库
#对mysql来讲,删除数据库是不可逆的,一定要三思而后行
SHOWVARIABLES LIKE '%datadir%';
#查看数据文件的目录,mysql定义了三百多个变量,他们使用%%来引用
mysqladmindebug #将mysqld运行过程中的错误保存在日志里
exend-status
mysqladminextended-status
#mysql允许过程中的统计数据,这些数据特别重要,尤其对于DBA
也可连上mysql后使用showstatus;查看
flush-hosts
flush-logs刷新日志
flush-privileges刷新权限定义
flush-status重置统计数据,一般不用
flush-tables
flush-threads
processlist当前有多少用户连接进来,进行什么样的操作
reload
refresh
shutdown关闭mysql数据库
start-slave启动从服务器
status
stop-slave
variables变量
version版本号
status扩展应用
msyqladminstatus –sleep 3 –count 2 #没三秒显示一次,一共显示两次
mysqladminstatus –sleep 3
图形话mysql监控工具
SQLyog
MYSQLFront
phpMyadmin
MysqlQuery Browser
MysqlAdministrator
MysqlWorkbench
分享到:
相关推荐
MySQL 基本原理
Mysql事务的基本使用-基本原理及特点ACID
本PPT介绍了Mysql基本架构、工作原理、安装启动流程。
本PPT共40页,开始介绍mysql的基本架构、查询过程详解、B-Tree索引原理、及详细实例。最后附送常用优化技巧。 培训用材料
这是我写的一个小示例希望能给大家学习带来帮助 ---dragonzhao
2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装MySQL 2.3.1. Windows系统要求 2.3.2. 选择安装软件包 2.3.3. 用自动安装器安装MySQL 2.3.4. 使用MySQL安装向导 2.3.5. 使用配置向导 2.3.6. 通过非安装...
3.4.3 ISP MySQL服务 3.4.4 运营一个使用MySQL的Web服务器 3.5 MySQL的许可证和技术支持费用 3.5.1 付款信息 3.5.2 联系信息 3.6 商业性支持的类型 3.6.1 基本的电子邮件支持 3.6.2...
从数据库原理的讲解,到MySQL的安装、配置、标准SQL的DML、DDL、DCL、高级查询、数据库设计、表约束、PowerDesigner12.5的使用、三大范式、索引、视图、存储过程和函数、触发器,MySQL权限原理及管理、数据的备份与...
主要介绍了MySQL DISTINCT 的基本实现原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
3.4.3 ISP MySQL服务 3.4.4 运营一个使用MySQL的Web服务器 3.5 MySQL的许可证和技术支持费用 3.5.1 付款信息 3.5.2 联系信息 3.6 商业性支持的类型 3.6.1 基本的电子邮件支持 ...
2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装MySQL 2.3.1. Windows系统要求 2.3.2. 选择安装软件包 2.3.3. 用自动安装器安装MySQL 2.3.4. 使用MySQL安装向导 2.3.5. 使用配置向导 2.3.6. 通过非安装...
2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装MySQL 2.3.1. Windows系统要求 2.3.2. 选择安装软件包 2.3.3. 用自动安装器安装MySQL 2.3.4. 使用MySQL安装向导 2.3.5. 使用配置向导 2.3.6. 通过非安装...
2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装MySQL 2.3.1. Windows系统要求 2.3.2. 选择安装软件包 2.3.3. 用自动安装器安装MySQL 2.3.4. 使用MySQL安装向导 2.3.5. 使用配置向导 2.3.6. 通过...
* 3 MySQL的许可证和技术支持 o 3.1 MySQL的许可证政策 o 3.2 MySQL 使用的版权 + 3.2.1 可能的未来版权改变 o 3.3 MySQL商业性分发 o 3.4 许可证实例 + 3.4.1 销售使用 MySQL的产品 + 3.4.2 销售MySQL相关...
2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装MySQL 2.3.1. Windows系统要求 2.3.2. 选择安装软件包 2.3.3. 用自动安装器安装MySQL 2.3.4. 使用MySQL安装向导 2.3.5. 使用配置向导 2.3.6. 通过非安装...
MySQL数据库的创建、查看、删除、使用命令。 表结构创建和修改、表约束的创建和修改; 表数据的插入、删除和修改; 表联系的创建和修改。
使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装MySQL 2.3.1. Windows系统要求 2.3.2. 选择安装软件包 2.3.3. 用自动安装器安装MySQL 2.3.4. 使用MySQL安装向导 2.3.5. 使用配置向导 ...
详细介绍PHP4的使用和编程方法。第1章将介绍PHP的历史、工作原理、功能特点及网络资源等一些基本情况,使读者在使用PHP之前能够对PHP有一个整体的认识。第2章将介绍在UNIX和Windows两种平台下的安装和配置过程。第3...