数据库命令
(1)展示所有用户
select user,host from mysql.user;
(2)提供专用连接线程
show processlist;
(3)全库 show databases;
表
(4)表 use mysql show tables;
1.看图详解mysql
image.png
2.mysql体系结构及基础管理
2.1客户端/服务器工作模型(c/s)
(1)本地scoket连接方式:
socket=/tmp/mysql.sock
mysql -S /tmp/mysql.sock
说明:只能在本地使用,不依赖于ip和端口
(2) 远程tcpip连接方式
mysql -uroot -p123 -h 10.0.0.51 -p 3306
2.2服务端:实例
实例:mysql+工作哦线程+预分配的内存结构
功能:管理数据
3.mysqlserver层
3.1连接层
1.提供连接协议(socket,tcp/ip)
2.验证
3.提供专用线程
mysq> show processlist;
3.2sql层
1.语法检查
2.语义(DDL、DCL、CML、DTL..)
3.权限
4.解析器:解析预处理(沙盘)评估执行此语句的方法有哪些A方案(全盘扫描 全表 ) B方案(索引) 得出执行的计划
5.优化器:帮我们选择他认为最优的方案(基于代价cost)
6.执行器:按照优化器的选择执行sql语句
得出执行结果:你需要的数据在磁盘的什么位置
7.查询缓存(query_cache 默认不开启)可以redis替代
8.日志记录(binlog二进制日志,golg,需要认为开启)
image.png
3.3.存储引擎层
相当于linux文件系统,和磁盘交互的模块
mysql处理语句流程图
image.png
4.mysql的逻辑结构(操作对象)
逻辑-->抽象
--------------------------------------------------------
linux
目录:名字 +属性
文件:文件名 + 文件属性 +文件内容
---------------------------------------------------------
mysql
库 : 库名 + 库属性
表 :表名 +表属性 + 表内容 + 列
---------------------------------------------------------
库 show databases;
表 use mysql show tables;
列 desc user;
5.mysql 物理存储结构
段 :一个表就是一个段,可以由一个或者多个区够成
区 :一个区(簇),默认1M,连续的64个pages
页 :一个页,默认16kb,连续的4个os block,最小的io单元
image.png
5.用户管理
5.1.用户的作用
linux用户:
登录linux系统
管理linux对象 文件 (linux一切都文件)
mysql用户:
登录musql数据库
管理mysql对象 表 (mysql一切都表)
5.2用户的定义
linux用户:用户名
mysql用户:用户名@‘白名单’
白名单
地址列表,允许白名单的ip登录mysql,管理mysql
oldliu@'localhost' :oldliu用户能够通过本地登录mysql
oldliu@'10.0.0.10' :oldliu用户
6.增删改查
6.1查
select user,host ,authentication_string from mysql.user;
authentication_string 这是查看用户有没有密码,不写就会把所有用户写出来
MariaDB [(none)]> select user,host ,authentication_string from mysql.user;
+--------+-----------+-----------------------+
| user | host | authentication_string |
+--------+-----------+-----------------------+
| root | localhost | |
| root | 127.0.0.1 | |
| root | ::1 | |
| zabbix | localhost | |
+--------+-----------+-----------------------+
4 rows in set (0.00 sec)
6.2增
本地登录MariaDB [(none)]> create user oldliu@'localhost';
ip登录并设置密码 create user oldyan@'10.0.0.%' identified by '123';
6.3改
6.4删除
MariaDB [(none)]> drop user oldliu@'localhost';
Query OK, 0 rows affected (0.00 sec)
注意8.0版本以前,是可以通过grant命令 建立用户+权限
7.权限管理
(1)作用
用户对数据库对象,有哪些管理能力
(2)权限的表现方式
具体命令
MariaDB [(none)]> show privileges;
+-------------------------+---------------------------------------+-------------------------------------------------------+
| Privilege | Context | Comment |
+-------------------------+---------------------------------------+-------------------------------------------------------+
| Alter | Tables | To alter the table |
| Alter routine | Functions,Procedures | To alter or drop stored functions/procedures |
| Create | Databases,Tables,Indexes | To create new databases and tables |
| Create routine | Databases | To use CREATE FUNCTION/PROCEDURE |
| Create temporary tables | Databases | To use CREATE TEMPORARY TABLE |
| Create view | Tables | To create new views |
| Create user | Server Admin | To create new users |
| Delete | Tables | To delete existing rows |
| Drop | Databases,Tables | To drop databases, tables, and views |
| Event | Server Admin | To create, alter, drop and execute events |
| Execute | Functions,Procedures | To execute stored routines |
| File | File access on server | To read and write files on the server |
| Grant option | Databases,Tables,Functions,Procedures | To give to other users those privileges you possess |
| Index | Tables | To create or drop indexes |
| Insert | Tables | To insert data into tables |
| Lock tables | Databases | To use LOCK TABLES (together with SELECT privilege) |
| Process | Server Admin | To view the plain text of currently executing queries |
| Proxy | Server Admin | To make proxy user possible |
| References | Databases,Tables | To have references on tables |
| Reload | Server Admin | To reload or refresh tables, logs and privileges |
| Replication client | Server Admin | To ask where the slave or master servers are |
| Replication slave | Server Admin | To read binary log events from the master |
| Select | Tables | To retrieve rows from table |
| Show databases | Server Admin | To see all databases with SHOW DATABASES |
| Show view | Tables | To see views with SHOW CREATE VIEW |
| Shutdown | Server Admin | To shut down the server |
| Super | Server Admin | To use KILL thread, SET GLOBAL, CHANGE MASTER, etc. |
| Trigger | Tables | To use triggers |
| Create tablespace | Server Admin | To create/alter/drop tablespaces |
| Update | Tables | To update existing rows |
| Usage | Server Admin | No privileges - allow connect only |
+-------------------------+---------------------------------------+-------------------------------------------------------+
31 rows in set (0.00 sec)
(3)授权回收权限操作
语法
8.0以前
garnt 权限 on to 用户 identified by '密码';
8.0后开始
create 用户 user identified by '密码';
gant 权限(权限可以是多个) on 对象 to 用户 identified by '密码';
权限介绍
ALL : 管理员
具体权限: 业务用户 开发 运维等
Grant option :
gant 权限(权限可以是多个) on 对象 to 用户 identified by '密码' with grant option;
对象: 库 表
管理员 *.* :------> chmod -R 755 / 根下的所有
普通用户 oldliu.* :-------> chmod 755 /oldliu /oldliu目录下的所有
oldliu.t1 :--------> chmod 755 /oldliu/t1 /oldliu/t1下的某个目录或者文件
(4)授权案例
案例1创建并授权管理员用户,能够通过10.0.0.%网段登录并管理数据库
grant all on *.* oldliu@'10.0.0.%' identified by '123' with grant option;
查询创建的用户
select user,host from mysql.user;
查寻创建用户的权限
show grants for oldliu@'10.0.0.%' ;
案例2创建并授权一个app@’10.0.0.%‘业务用户,能够对app库下所有对象进行create,update,select
grant create,update,select to app@'10.0.0.%' identified by '123';
查询
show grants for app@'10.0.0.%';
(5)扩展mysql 授权表 (都在mysql库下)
user : *.*
db : app.*
tables_priv : app.t1
columns_priv : 列
image.png
(6)回收权限
linux中
chmod -R 755 /oldliu ------->chmod -R 644 /oldliu
###注意:mysql中不能通过重复授权修改权限,只能通过回收权限进行修改
回收权限
revoke create on app.* from 'app'@'10.0.0.%‘;
(7)查询用户的权限
select * from mysql.user/G
(8)超级管理员忘记密码
--skip-grant-tables: 跳过授权表
--skip-networking:跳过TCP/IP连接\
#a.关闭数据库
#b.使用安全模式启动
mysql_safe --skip-grant-tables --skip-networking
或者
service mysql start --skip-grant-tables --skip-networking
#c.登录数据库并修改密码
mysql 进入数据库
修改密码会报错,手工加载授权表
flush privileges;
#d.重启数据库
进入数据库用修改过后的密码进入
image.png
网友评论