CentOS7环境下安装
获取mysql:
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
查看可安装的mysql版本:
yum repolist enabled|grep mysql
安装命令:
yum install mysql-community-server
systemctl enable mysqld
systemctl start mysqld
mysqladmin -u root password passwd
mysql -uroot -p
root账户登录Mysql
- Mysql体系结构
- MySQL登录方式
TCP/IP方式(最常用):mysql -uuser -ppasswd -h IP -P 3306
Socket方式(本地):
mysql -uuser -ppasswd -S /tmp/mysql.sock -P 3306
- mysqld程序运行原理
2.1 mysqld程序结构
2.2 sql语句执行过程
连接层:
如上图在连接层中:
1)、提供连接,TCP/IP建立连接或本地Socket连接;
2)、身份验证;
3)、接受用户SQL;
SQL层:
1)、接受上层传递的SQL
2)、语法验证,验证SQL语法是否满足
3)、语义检查,判断SQL语句类型,DDL、DML、DQL等
4)、权限检查
5)、解析器,对语句执行前的预处理,生成解析树(就是执行计划)
6)、优化器,根据解析器的多种执行计划,判断选择最优计划执行。会消耗系统资源
7)、执行器,真正执行优化后的执行计划,就是执行SQL,返回产生结果,在磁盘上有改变
8)、提供查询缓存,默认情况不开启,实际场景会使用redis、memcache等缓存替代查询缓存功能
9)、日志记录,需要开启binlog功能
存储层:
1)、根据SQL层的执行结果,磁盘读取数据
2)、将16进制的磁盘数据,由SQL结构化成表
3)、连接层专用线程返回给用户
3.数据物理存储结构
1)、库物理存储结构
OS系统的文件系统目录存储。
2)、表的物理存储结构,MySQL存储引擎
InnoDB是mysql的一种存储引擎,除了innodb还有其它的,例如isam,myisam等。
InnoDB是其中的一种存储引擎,它的特性是支持事务,并且采用多版本并发控制的方式来提高并发度。特色在于支持并发与表间引用。主要是事务表,当一个事务全部完成,才会执行update。mysql5.5后的版本,默认都支持InnoDB。
InnoDB引擎的表:
-rw-rw---- 1 mysql mysql 8895 4月 12 2018 default.frm
-rw-rw---- 1 mysql mysql 114688 4月 12 2018 default.ibd
default.frm:存储列相关信息
default.ibd:数据行+索引
Myisam引擎的表
-rw-r----- 1 mysql mysql 10816 Apr 18 11:37 user.frm
-rw-r----- 1 mysql mysql 396 Apr 18 12:20 user.MYD
-rw-r----- 1 mysql mysql 4096 Apr 18 14:48 user.MYI
user.frm:存储列相关信息
user.MYD:数据行
user.MYI:索引
3)、表的段、区、页
表:一个表就是一个段,可包含多个区;
区:64个连续的页,默认1M
页:最小的存储单元,默认16K
- Mysql基础管理
- 用户管理
查询数据库中所有用户:SELECT DISTINCT CONCAT(‘User: ‘‘‘,user,‘‘‘@‘‘‘,host,‘‘‘;‘) AS query FROM mysql.user; select host,user,password from mysql.user \G
查询数据库中某个用户权限:
show grants for ‘user‘@‘%‘;
- 权限
grant赋予权限,常用权限有All、Select、update、insert等。grant all on ku.* to ‘user‘@localhost identified by ‘passwd‘; grant all on ku.* to ‘user1‘@‘%‘ identified by ‘passwd‘; grant select,update,insert on ku.* to ‘user2‘@‘%‘ identified by ‘passwd‘;
其中“%”表示远程权限。
revoke表示撤销权限,用法如下:revoke all on ku.* from ‘user‘@‘%‘; revoke delete,insert on ku.* from ‘user1‘@‘%‘;
- 命令常用参数
mysql 常用参数:
-u 用户
-p 密码
-h IP
-P 端口
-S socket文件
-e 免交互执行命令
< 导入SQL脚本 - 本地管理员root密码忘记处理
# mysqld_safe --skip-grant-tables --skip-networking & mysql> flush privileges; mysql> alter user [email protected]‘localhost‘ identified by ‘123456‘; # pkill mysqld # systemctl start mysqld
- 库备份与恢复
mysqldump用于数据库的备份操作命令。
5.1 库操作:
1).导出一个库结构:(-d:--no-data)mysqldump -d dbname -u root -p > dbname.sql
导出多个库结构:
mysqldump -d -B db1 db2 -u root -p > dbname.sql
2).导出一个库数据:
mysqldump -t dbname -u root -p > dbname.sql
导出多个库数据:
mysqldump -t -B db1 db2 -u root -p > dbname.sql
3).导出一个库结构和数据:
mysqldump dbname -u root -p > dbname.sql
导出多个库结构和数据:
mysqldump -B db1 db2 -u root -p > dbname.sql
5.2 表操作:
1).导出一张表数据:
mysqldump -t dbname table1 -u root -p > dbname.sql
导出多张表数据:
mysqldump -d -B dbname --tables table1 table2 -u root -p > dbname.sql
2).导出一张表数据和结构:
mysqldump dbname table1 -u root -p > dbname.sql
导出多张表数据和结构:
mysqldump -B dbname --tables table1 table2 -u root -p > dbname.sql
5.3 存储过程和函数操作:
1). 只导出存储过程和函数
mysqldump -uroot -p -ntd -R --set-gtid-purged=OFF dbname > dbname.sql
--set-gtid-purged=OFF 这个选项控制是否要用gtids来恢复,默认开启的
-ntd 不导出结构和数据
-R 导出函数及存储过程。
-n:--no-create-db
-d:--no-data
-n:--no-create-info
-R:functions and procedures
2). 导出所有,导出数据、数据结构、存储过程、函数
mysqldump -uroot -R dbname -p > dbname.sql
存储过程:
show procedure status;
show create procedure pro_create_exo_order;
5.4 导入恢复:
mysql -u root -ppasswd ku < /root/ku.sql
mysqldump -uroot -p -B -F -R -x --master-data=2 ops|gzip >/opt/backup/ops_$(date +%F).sql.gz
参数说明:
-B:--databases,导出数据库列表,单库可省略
-F:刷新日志
-R:--routines导出存储过程及自定义函数
-x:锁表
-t:--no-create-info只导出数据,而不添加create table语句
-n:--no-create-db只导出数据,而不添加create database语句
-d:--no-data不导出任何数据,只导出库表结构
--tables 表列表(单个表时可省略)
①同时导出结构以及数据时可同时省略-d和-t
②同时不导出结构和数据可使用-ntd
③只导出存储过程和函数可使用-R -ntd
④导出所有(结构&数据&存储过程&函数&事件&触发器)使用-R -E(相当于①,省略了-d -t;触发器默认导出)
⑤只导出结构&函数&事件&触发器使用 -R -E -d
--master-data:在备份语句里添加CHANGE MASTER语句以及binlog文件及位置点pos信息
原文地址:https://blog.51cto.com/10874766/2428606