Mysql原理,安装和基本使用

Mysql的原理,安装和基本使用


mysql执行流程:

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


1.客户端请求,服务器端(连接器)开辟线程响应用户

2.用户发起SQL语句查询数据库

3.查询缓存:记录用户的SQL查询语句,如果再次查询同样内容,就返回缓存

4.如果缓存没有进入分析器:(分析器也可能借签缓存)

语法分析器:用户命令语法是否正确

词法分析器:将用户的命令进行切片,一个词一个词用空格隔开,获得用户要查询的表,内容,用户的权限等

5.优化:执行路径的选择,生成执行树

每个SQL语句都有很多执行路径,优化的目的就是在这些执行路径里选择一个最优的执行路径

6.存储引擎:用于管理存储在文件系统,甚至是裸设备上的数据管理程序,它本身给上层应用提供不同的管理,有的支持事务,有的不支持事务。



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


MYSQL的结构:


客户端:mysql

连接器: NativeC API 本地C语言接口

JDBCJAVA的数据库连接器

ODBC开放式数据库互联,非常底层 ORACLESOLServer都支持

连接池(conetcionpool):它的后方是MYSQL的真正功能

SQL接口:用户通过sql客户端发过来的命令,由sql接口接收

DML数据操作语言:查询,修改,升级数据等

DDL数据定义语言:创建一个新的数据库,新的索引,删除一个用户等

存储过程视图触发器


Parser:分析器

查询 事务 对象权限

optimizer:访问路径

生成执行树


caches&buffers:缓存和缓存

优化里最重要的是缓存的优化


pluggablestroage engines存储引擎(插件式):将逻辑结构转换为物理结构的程序

ManagementServices & Utilites工具:备份,恢复,安全,移植,集群等,这些工具一般和文件系统打交道,不需要和mysql-server打交道,它们对应的都是命令。

数据库对象:(逻辑)

表,二维关系

索引

视图

触发器

存储过程

存储函数

事件調读器

游标

用户


物理

文件


将数据库对象和物理对象对应起来就是存储引擎

Mysql

*插件式的存储引擎


mysqlmysql的连接方式: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;查看表的结构

SELECTHostUserPasswordFROM 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











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值