连接mysql
连接方式
- 短连接
- 长连接
- 连接池
mysq通过mysql数据库的user表的(host,user)键来区分数据库用户
# 连接mysql服务器
$ mysql -u user_name -h host -p
若连接不上,则在服务器查询下数据库的用户表
# 列出所有数据库
show dabases;
# 选择mysql数据库
use mysql;
# 查看当前选择的数据库
select database();
# 列出数据库下的表
show tables;
# 列出数据库的用户
select host,user,password from user;
# 更新为外网可以访问
update user set host='%' where user='root' and host='localhost';
Mysql权限
服务器会有两种连接阶段
- 服务器会检查是否有权限连接
- 服务器会检查是否会执行sql的权限
其中连接的权限由password,user,host三个字段;其他crud等由user表其他权限字段控制
一下是 mysql
数据库下的user
表字段(version 5.1)
- Host
- User
- Select_priv
- Insert_priv
- Update_priv
- Delete_priv
- Create_priv
- Drop_priv
- Reload_priv
- Shutdown_priv
- Process_priv
- File_priv
- Grant_priv
- References_priv
- Index_priv
- Alter_priv
- Show_db_priv
- Super_priv
- Create_tmp_table_priv
- Lock_tables_priv
- Execute_priv
- Repl_slave_priv
- Repl_client_priv
- Create_view_priv
- Show_view_priv
- Create_routine_priv
- Alter_routine_priv
- Create_user_priv,
- Event_priv
- Trigger_priv
- Create_tablespace_priv
- ssl_type
- ssl_cipher
- x509_issuer
- x509_subject
- max_questions
- max_updates
- max_connections
- max_user_connections
- plugin
- authentication_string
- password_expired
- password_last_changed
- password_lifetime
- account_locked
mysql是设计为OLTP
On-Line Transaction Processing联机事务处理过程(OLTP)
也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作快速响应的方式之一。
软件架构
- 两层架构 客户端直接操作数据库
- 三层架构 客户端与数据库之间通过web应用交互
Sql是声明性语言
sql 是声明性语言,它只告诉数据库要查询什么,但并不告诉数据查询的方法,数据库要做的就是基于算法和统计信息计算出一条最佳的方法流程,这个工作是优化器来完成的。
mysql架构原理图
sql执行流程
查询缓存
在解析一个查询语句前,如果查询缓存是打开的,那么MySQL会检查这个查询语句是否命中查询缓存中的数据。如果当前查询恰好命中查询缓存,在检查一次用户权限后直接返回缓存中的结果。这种情况下,查询不会被解析,也不会生成执行计划,更不会执行。语法解析和预处理
MySQL通过关键字将SQL语句进行解析,并生成一颗对应的解析树。这个过程解析器主要通过语法规则来验证和解析。比如SQL中是否使用了错误的关键字或者关键字的顺序是否正确等等。预处理则会根据MySQL规则进一步检查解析树是否合法。比如检查要查询的数据表和数据列是否存在等等。查询优化
经过前面的步骤生成的语法树被认为是合法的了,并且由优化器将其转化成查询计划。多数情况下,一条查询可以有很多种执行方式,最后都返回相应的结果。优化器的作用就是找到这其中最好的执行计划。