您的位置:首页 > 数据库 > MySQL

Mysql原理,安装和基本使用

2011-08-31 20:13 447 查看
Mysql的原理,安装和基本使用

mysql执行流程:
mysql是一个单进程的服务,对于每一个请求都是用线程来响应的,这就需要一个连接器来处理新用户的请求,响应,销毁



1.客户端请求,服务器端(连接器)开辟线程响应用户
2.用户发起SQL语句查询数据库
3.查询缓存:记录用户的SQL查询语句,如果再次查询同样内容,就返回缓存
4.如果缓存没有进入分析器:(分析器也可能借签缓存)
语法分析器:用户命令语法是否正确
词法分析器:将用户的命令进行切片,一个词一个词用空格隔开,获得用户要查询的表,内容,用户的权限等
5.优化:执行路径的选择,生成执行树
每个SQL语句都有很多执行路径,优化的目的就是在这些执行路径里选择一个最优的执行路径
6.存储引擎:用于管理存储在文件系统,甚至是裸设备上的数据管理程序,它本身给上层应用提供不同的管理,有的支持事务,有的不支持事务。

#查询缓存可以大大加速这个过程,不过缓存本身可能带来劣势,假如一个用户要查询一个数据,正好缓存里有,而在之前,这条数据刚刚被修改过那么返回的缓存结果就是过时的。

MYSQL的结构:




客户端:mysql
连接器:
NativeC API 本地C语言接口
JDBCJ***A的数据库连接器
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: