赞
踩
目录
目录
MySQL是由SQL接口、解析器、优化器、存储引擎组成。
一共连接层、SQL层、存储引擎层和物理文件层。
思想:为解决资源的频繁分配,释放所造成的问题,为数据库连接建立一个“缓冲池”。
原理:预先在缓冲池放入一定数量的连接,党需要建立数据库连接时,只需从“缓冲池”中取
出一个,使用完毕之后再放回去。
作用:进行身份验证、线程重用,连接限制、检查内存,数据缓存;管理用户的连接,线程
处理等需要缓存的需求。
管理服务和工具组件:从备份和恢复的安全性、复制、集群、管理、配置、迁移和元数据等
方面管理数据库。
SQL接口组件:进行DML、DDL、存储过程、试图、触发器等操作和管理;用户SQL命令接
口。
解析器组件:验证和解析SQL命令。
查询优化器组件:对SQL语句查询进行优化“取、投影和连接”。
缓存和缓冲区:有一系列小缓存组成的。比如表缓存、记录缓存、key缓存、权限缓存等。
MySQL的存储引擎是插件式的。它根据MySQL AB公司提供的文件访问层的一个抽象接口来制定一种文件访问机制,这种访问机制就叫存储引擎。
MyISAM:它查询速度快,有较好的索引优化和数据压缩技术。但是它不支持事务;
InnoDB:它支持事务,并且提供行级的锁定,应用也相当广泛;
BDB:不在从底层支持BDB;
Memory:适合存储临时数据;
Archive:适合存储历史数据;
支持的文件类型:EXT3、EXT4、NTFS、NFS
文件内容:
1、数据文件
2、日志文件
3、配置文件
4、其他文件
连接层:
(1)提供连接协议:TCP/IP、SOCKET;
(2)提供验证:用户,密码,IP,SOCKSET;
(3)提供专用连接线程:接手用户SQL,返回结果;
SQL层:
(1)接受上层传送的SQL语句;
(2)语法验证模块:验证语句语法,是否满足SQL_MODE;
(3)语义检查:判断SQL语句的类型;DDL:数据定义语言
DCL:数据控制语言
DML:数据操作语言
DQL:数据查询语言
....
(4)权限检查:用户对库表没有权限
(5)解析器:对语句执行前,进行预处理,生成解析树(执行计划),即生成多种执
行方案
(6)优化器:根据解析器得出的多种执行计划,进行判断,选择最优的执行计划。
代价模型:资源(CPU、IO、MEM)的耗损评估性能好坏
(7)执行器:根据最优计划,执行SQL语句,产生执行结果;
执行结果:在磁盘的XXX位置上
(8)提供查询缓存(默认是没开启的):会使用redis tair 代替查询缓存功能;
(9)提供日志记录(日志管理章节):binlog,默认是没开启的。
存储引擎层(类似于Linux中的文件系统):
负责根据SQL层执行的结果,从磁盘上拿数据。
将16进制的磁盘数据,交由SQL结构化成表。
连接层的专用线程返回给用户。
- systemctl stop firewalld //关闭防火墙
- systemctl disable firewalld //永久关闭
- 禁用SELinux:
- 进入文档:
- vi /etc/selinux/config
-
- 将SELINUX= ???
- 修改为SELINUX=disabled
- 保存并退出
- 刷新:setenforce 0 //设置为宽容(警告)模式
-
- 推荐使用:#sed -i '/^SELINUX=/ c SELINUX=disabled' /etc/selinux/config
- 依旧需要刷新
-
- 安装常用软件:
- yum install wget unzip bash-completion tree vim lrzsz net-tools -y

[root@localhost ~]# yum install http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm -y
[root@localhost ~]# yum install mysql-community-server -y
- [root@localhost ~]# mkdir mysql/
- [root@localhost ~]# tar xf mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar -C mysql
- [root@localhost ~]# cd mysql/
- 卸载:mariadb-libs
- [root@localhost mysql]# rpm -e mariadb-libs postfix
- [root@localhost mysql]# yum localinstall -y mysql-community-server-5.7.18-1.el7.x86_64.rpm mysql-community-client-5.7.18-1.el7.x86_64.rpm mysql-community-common-5.7.18-1.el7.x86_64.rpm mysql-community-libs-5.7.18-1.el7.x86_64.rpm -y
- [root@localhost mysql]# systemctl start mysqld
- [root@localhost mysql]# systemctl enable mysqld
- [root@localhost mysql]# mysql -u root -p
- Enter password:
- [root@localhost ~]# groupadd -r mysql
- [root@localhost ~]# useradd mysql -r -g mysql -c "MySQL Server" -s /bin/false
- [root@localhost ~]# tar xf mysql-5.7.14-linux-glibc2.5-x86_64.tar -C /usr/local
- [root@localhost ~]# tar xf /usr/local/mysql-5.7.14-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
- 创建软连接:方便以后升级
- [root@localhost ~]# ln -sv /usr/local/mysql-5.7.14-linux-glibc2.5-x86_64 /usr/local/mysql'/usr/local/mysql' -> '/usr/local/mysql-5.7.14-linux-glibc2.5-x86_64'
[root@localhost ~]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data
- [root@localhost ~]# cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
-
- 修改配置文件:vim /etc/my.cnf
- [mysqld]
- ...
- basedir = /usr/local/mysql
- datadir = /usr/local/mysql/data
-
- 服务脚本:
- [root@localhost ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
- 添加系统服务,并设置为开机自启动
- [root@localhost ~]# chkconfig --add mysqld
- [root@localhost ~]# chkconfig mysqld on
- [root@localhost mysql]# mysql -u root -p
- Enter password:
awk '/temporary password/ {print $NF}' /var/log/mysqld.log
设置及修改MySQL root用户密码
方法1:# mysqladmin -uroot -p'123456' password '123'
[root@node4 ~]# mysqladmin -uroot -p password
Enter password: 旧密码
New password: 新密码
Confirm new password: 再次输入新密码
方法2:
mysql> alter user root@localhost identified by '123';
Query OK, 0 rows affected (0.00 sec)
方法3:
mysql> SET PASSWORD FOR 'root'@'localhost' = '123456';
Query OK, 0 rows affected (0.00 sec)方法4:
mysql> update mysql.user set authentication_string=password('12345')
-> where user="root" and host="localhost";
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
思路:启动时跳过权限表,设置密码。
配置文件添加[mysqld]
skip-grant-tables
方法1:
mysql> update mysql.user set authentication_string=password('123456')
-> where user='root' and host='localhost';
mysql> flush privileges;
方法2:
mysql> flush privileges;
mysql> ALTER USER root@localhost identified by '123456';
修改字符集
进入配置文件
[root@localhost ~]# vim /etc/my.cnf
在[mysqld]下添加下列代码
character-set-server=utf8 #utf8支持中文输入退出,重启服务
[root@localhost ~]# systemctl restart mysqld
进入MySQL,查看字符集
mysql> show variables like'%character%';
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。